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