Я — эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.
$rb = str_pad (decbin (mt_rand (0,64)),6,"0", STR_PAD_LEFT);
$herb = (int) strpos ($rb, "1");
Смысл в том, что каждое следующее значение должно выпадать с вдвое меньшей вероятностью, чем предыдущее. Пока я спал, мне пришло в голову довольно забавное решение на ту же тему. Оно быстрее примерно на 30%, не обладает ограничением на размер и точнее вычисляет вероятности (у Димы «трафка» не выпадает с вероятностью примерно 52%), но не решает задачу полностью. Кто скажет в чём разница, не запуская код?
for ($i = 5; $i && mt_rand(0, 1); --$i);
bolk (bolknote.ru)
14 ноября 2007, 13:11
Ramon (rembish.ru)
14 ноября 2007, 13:19
nudnik.ru (nudnik.ru)
14 ноября 2007, 13:22
nudnik.ru (nudnik.ru)
14 ноября 2007, 13:26
Ramon (rembish.ru)
14 ноября 2007, 13:28
bolk (bolknote.ru)
14 ноября 2007, 13:57
bolk (bolknote.ru)
14 ноября 2007, 14:12
Ramon (rembish.ru)
14 ноября 2007, 14:40
bolk (bolknote.ru)
14 ноября 2007, 16:31
Ramon (rembish.ru)
У Вас веса в обратную сторону: пятерка выпадает чаще, чем ноль.14 ноября 2007, 12:54
И, кроме того, у Вас правильно обрабатывается оставшийся вес - у Димы, например, туда отводится ~1,5625% у вас должные оставшиеся ~3,125%.