Вопрос Генерация случайных чисел


Я создал случайные числа в turbo C ++ (DOS) с помощью случайной команды.
Опять же, я создал случайное число в ubuntu C ++ с помощью команд srand и rand.

Оба случайных генерации не соответствуют друг другу (т. Е. Оба поколения отличаются для определенного семени).

Пожалуйста, дайте мне знать причины этой проблемы. Можно ли получить код за командами случайных команд, srand и rand?


1
2018-06-19 06:04


происхождения




ответы:


Turbo C ++ и Gnu G ++ (C ++) (возможно, LLVM / clang) имеют разные библиотеки. Их реализации rand, srand и много (многие!) функции, вероятно, будут отличаться в КАК они обеспечивают правильный результат.

Каждая функция в этих библиотеках будет давать ожидаемые результаты, open, read, exit и так далее. (Если они этого не делают, они не очень "соответствие стандартам«).

Так rand & srand  НАХОДЯТСЯ работая должным образом в каждой среде ... они обеспечивают (и семя) случайные числа.

КАК они приходят к тому, что результат не определен, существует несколько методов создания случайных чисел (см. `Генерация случайных чисел ' для получения дополнительной информации о RNG)

Поэтому, даже учитывая одно и то же начальное значение, вы не можете ожидать, что разные библиотеки RNG будут предоставлять идентичный результат. Это будет верно независимо от того, какой источник библиотек вы используете: Microsoft, Solaris, Linux, * BSD, OSX и т. Д.

Только если точный  одна и та же метод используется для получения случайных чисел, вы можете сортировать ожидаемую идентичную серию. Различия в сборе энтропии могут различаться и создавать возмущения с течением времени. Я предполагаю, что кто-то меня исправит по поводу «рода», но пока вы используете одни и те же библиотеки, вы должны получать одинаковые результаты из тех же семян. (то же самое!)


2
2018-06-20 00:53