PDA

Виж пълна версия : random


Phantom
21.02.07 г., 22:44
Винаги съм се чудил каква е логиката на тоя рандом. В смисъл не как се използва, ами как така рандома избира всеки път произволното число. Само логиката, не подробно. Щото се поразрових из нета, ама или не търся правилно или съм карък, защото нищо не намерих. Благодаря предварително.

Говоря за random в паскал и c++

симо
22.02.07 г., 00:18
Можеш да направиш random използвайки системната дата и час. А колкото до ц++ и функцията rand() там числата не са произволни, защото всеки път генерира едни и същи ;)

Phantom
22.02.07 г., 00:43
Можеш да направиш random използвайки системната дата и час. А колкото до ц++ и функцията rand() там числата не са произволни, защото всеки път генерира едни и същи ;)

Да, но randomize() ?

Tarvin
22.02.07 г., 02:55
http://computer.howstuffworks.com/question697.htm

Тук е описано доста грубо, но ако се разтърсиш, сигурно ще има и по-хубави обяснения за принципа.

icaci
22.02.07 г., 03:12
Както вече са ти го обяснили, най-често използваният начин за засяване на псевдослучайния генератор на rand() е с използване на системното време. Проблемът е, че ако програмата се пусне два пъти в рамките на 1 секунда, случайните поредици ще бъдат идентични, поради което често пъти системното време се сумира с идентификатора на процеса. Или пък се използва някакъв "хардуерен" генератор на случайни числа, използващ източниците на ентропия в системата - честотата на прекъсванията от диска, времето между натискане на два клавиша на клавиатурата, прекъсвания от мрежовата платка и т.н. и т.н.... Дори някои чипсети (напр. някои варианти на i8x0) имат вградени случайни генератори, основани на някакъв генератор на бял шум с обратен пробив в ценеров диод (или нещо такова).

Phantom
22.02.07 г., 11:03
Стана ми ясно вече. Мерси

z0ne
22.02.07 г., 22:12
Общо взето навсякъде функцията за "random" е rand().Дори и при една проста MySQL заявка:

SELECT нещо FROM таблица WHERE нещо ORDER BY rand() LIMIT число :)