незваный гость писал(а):
:evil:
Вы путаете две разных сущности: состояние датчика случайных чисел и выдаваемое им значение. Конкретно в Borland C 3.0, состояние — это 32 бита unsigned long, а выдаваемое значение — 15 бит signed int. Естественно, попытка трактовать выдаваемое значение как состояние не может увенчаться успехом.
именно это я и сказал
но состояние датчика мы не можем узнать, если только...
Код:
unsigned seed(int x){ // x - возвращаемое значение rand();
int tmp = -1;
int i = 0;
while(tmp != x){
srand(i);
tmp = rand();
++i;
}
return (i - 1);
}
но подобный подобные затраты не стоят результата...
незваный гость писал(а):
Проблема, затронутая мной, состоит в том, что для датчика случайных чисел являются нормальными повторы. Например, Вы кидаете кубик семь раз. Какое-нибудь из чисел обязательно выпадет дважды. Но это не значит, что следом за ним выпадет то же число, что и в первый раз. Может выпасть, может и не выпасть.
Алгорифмы Флойда и Брента молчаливо подразумевают, что если однажды произошло совпадение, оно будет происходить и в дальнейшем. И это делает их трудно адаптируемыми для проверки датчиков случайных чисел.
А можно пример по корректнее, ведь каждый бросок кубика не зависит от предыдущего...