Просмотр полной версии : Random. Как, собственно, он работает в общих чертах?
Contemplator
08.10.2010, 14:10
Вчера в голову взбрело: а как собственно он работает в общих чертах? т.е. как проходит выборка случайного (ну да, да, - псевдо-случайного, - не в этом суть) из диапазона? =))
Мат. подоплёка какая? =))
Psycho Tiger
08.10.2010, 14:25
Ну нужен какой-то seed чтобы начать генерировать случайные числа. Этот seed калькулируется из системного времени. А потом крутится вертится и вот.
drnet_ua
08.10.2010, 14:25
самый простой вариант:
RandSeed = любое число в диапазоне (0..1)
NextRandom = RandSeed;
следующее "случайное число":
NextRandom = ДробнаяЧасть((RandSeed+random)*(RandSeed+random));
NextRandom = ДробнаяЧасть( (1+NextRandom) * (1+NextRandom) );
но это самый простейший вариант :)
люди придумали все намного сложнее, нам на числовых методах очень нахваливали этот (http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_%D1%81%D0%B4%D0%B2%D0%B8%D0%B3%D0%B0_%D1%81_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D 1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B9_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C%D1%8E)
Да можно сделать полную случайность, которая равна что-то типа 0.000000000001, но такое мне кажется глупо. Лучше привязывать событие к католичеству попыток/действий, типа 1 к 1000, и точно знать что 1 к 1000 будет. (:
drnet_ua
08.10.2010, 22:06
мысль непонятна
генераторы имеют несколько способов использования, и для некоторых случаев "случайность" должна быть контролируема.
простейший пример - рандсид от пароля - и вот тебе ключ какой-хочешь длинны, тут случайность будет лишней
далее вся эта кухня подчиняется законам распределения, у разных генераторов она разная, попытка "логически" привести одно распределение к другому ни к чему не хорошему приведет :) я пробывал
сам по себе генератор, в большинстве своем достаточно надежный, проблемма именно в стартовых условиях. время/действия пользователя и тд, чем случайней там личче
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.