Умные вопросы
Войти
Регистрация
Почему функция rand в C+ при генерировании последовательностей орел-решка не может сгенерировать последовательности
не может сгенерировать последовательности боле 15 орлов\решек подряд?
8 года
назад
от
Валентина Абрамян
2 Ответы
▲
▼
0
голосов
вобще-то "штатная" функция rand в стандартной сишной библиотеке - вобще безобразна, у не следующе число генериуется из предыдущего, причем состояние хратинся в 32-битовых long, а значит максимальная длина последовательности, которую она выдает - 2^32-1 (0 - не бывает) , после этого все идет по циклу, так что если вы за этот цикл не встретили то, что искали - не встретите никогда.
собственно, у любого алгоритма псевдослучайных чисел есть цикл. Есть способы существенного удлинения этого цикла - но он всегда конечен.
если бы числа были действительно случайными, то вероятность встретить была бы 1/2^15, то есть вам потребовалось бы перебрать порядка 2^15 чисел.
можно использовать "замешивание", берется два датчика разной природы, один - хороший, второй - любой. Изначально первым датчиком заполняется буфер, скажем в 1013 чисел, затем при каждом обращении вторым датчиком выбирается одно число из буфера, его возвращают в качестве случайного а на его место пишется новое число, сгенерированное первым датчиком.
Ну и если вы хотите получать орлы и решки - надо брать старшие биты, чем младше бит - тем он мене случаен. Самый младший вобще чередуется 0-1-0.
8 года
назад
от
Золотухин кирилл
▲
▼
0
голосов
Вот представь, у меня она после запуска всегда через одно и то же кол-во вызовов выдавала 15 орлов подряд.
Потом вставил srand (time (0) ; в начало main () , всё вылечилось - стала каждый раз за разное кол-во итераций выдавать 15 орлов.
Вопрос: какого хрена?
А я тебе скажу. Инициализация ГПСЧ (генератора псевдо-случайных чисел) - задача обычно (по времени) боле трудоемкая по сравнению с последующей генерацией оных большими пачками.
8 года
назад
от
..........
Связанные вопросы
3
ответов
За какое время долетит кирпич?
2 года
назад
от
Марк Марк
1
ответ
Если выпустить всю воду из тихого океана в космос , то будет ли она иметь гравитацию
1 год
назад
от
игорь чернобай
1
ответ
Греющий кабель. что значит саморегулирующийся
2 месяцев
назад
от
AlexisMcGill