Форум: "Потрепаться";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизЗадачка Найти похожие ветки
← →
default © (2005-02-17 19:42) [0]Имеется несимметричная монета, для которой вероятность
выпадения орла есть неизвестное нам число p (0 < p < 1).
Покажите, как с её помощью можно имитировать симметричную
монету, сделав несколько бросаний.
(Указание: бросьте монету дважды; если результаты разные,
дайте ответ; если одинаковые, повторяйте испытание.)
P.S. таким образом, найдя алгоритм, можно от обычных
монеток, независимо от того насколько они несимметричны,
получать тот же результат что и от симметричных монеток
правда подрасывать придётся более одного раза.
← →
Virgo_Style © (2005-02-17 21:12) [1]Для начала, imho, надо найти p, что вообще говоря, требует в идеале бесконечного числа экспериментов. Когда с этим будет покончено ;-D , можно будет разговаривать дальше. AFAIR.
← →
MBo © (2005-02-17 21:14) [2]не совсем понятно, в чем состоит задача.
при бросании 2 раза возможны исходы с вероятностями:
ОО p^2
ОР p(1-p)
РО (1-p)p
РР (1-p)^2
поскольку p не знаем, игнорируем первый и последний исходы.
Последовательности же ОР и РО равновероятны, так что выпадение первой считаем квазиорлом, а второй - квазирешкой :)
← →
Virgo_Style © (2005-02-17 21:17) [3]MBo © (17.02.05 21:14) [2]
КЛАСС!! :-)
← →
default © (2005-02-17 22:24) [4]MBo © (17.02.05 21:14) [2]
да!!я тоже догадался
признайте красивая задача?
и есть практическое её применение и не требует каких-то знаний, больших выкладок:)
← →
default © (2005-02-17 22:27) [5]MBo © (17.02.05 21:14) [2]
кстати если бы не было указания, наверно, решение на дольше бы затянулось или нет(для вас)?
← →
default © (2005-02-17 22:30) [6]вот моделирование на всякий
const
p = 0.3;
N = 1000000;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
F: Boolean;
i, succ: Cardinal;
begin
Randomize;
succ := 0;
for i := 1 to N do begin
repeat
F := Random <= p;
if (F <> (Random <= p)) then begin
if F then Inc(succ);
Break
end;
until False;
end;
Caption := FloatToStr(succ / N);
end;
← →
MBo © (2005-02-18 06:31) [7]Да, задача занятная.
В принципе, достаточно наводки "сделав несколько бросаний"
>решение на дольше бы затянулось или нет
Это непредсказуемо ;)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c