тут надо смоделировать одну вещь...
исследуем некий модуль который в результате одного действия с вероятностью Х>=0.5 дает единичку на выходе (и с вероятностью 1-Х соответственно дает ноль)
теперь проводим опыт: делаем действие с модулем до тех пор пока он выдает единичку, считаем количество действий, получаем N действий.
далее, проводим множество таких опытов чтобы определить средний N.
вопрос как по N определить Х?
суть в том что и опыты над девайсом нам не доступны, известно лишь (продекларировано в его характеристиках) его N. нужно сделать симулятор девайса и соответственно по N надо вычислить X.
я пока экспериментальным путем подобрал вероятность, написав вот такой скриптик на перле:
================================ #!/usr/bin/perl
use Math::Round; use strict; use warnings;
# количество опытов my $test_count=10000;
# тестируемая вероятность my $probability=0.5;
sub easy_test() { return 1 if rand()<$probability; return 0; }
sub test() { my $result=1; $result++ while(easy_test());
return $result; }
my $repetition=0; for (my $i=0; $i<$test_count; $i++) { $repetition+=test(); } $repetition/=$test_count; printf "Для вероятности %1.2f в среднем " . "получается %d (%1.3f) повторений\n", $probability, round($repetition), $repetition;
=================================
меняю вероятность в начале, получаю среднее количество повторов. (для 0.5 соответственно получается N=2)
далее прогнал цикл с некоторым шагом для всех вероятностей в диапазоне [0.5, 1), получил таблицу и реализовал девайс, но озота бы просто формулу ввести, а что-то копаюсь по справочнику Корна и не соображу все никак как решить задачу.
кто не растерял в памяти тервер после института, помогите а?