Использует ли msvcrt.dll линейный конгруэнтный генератор для своей функции rand()?

StackOverflow https://stackoverflow.com/questions/1931656

  •  20-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь предсказать выходные данные программы, которая использует функцию rand() msvcrt для генерации граней трех игральных костей.Я считаю, что код выглядит примерно так:dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;, и мне было интересно, смогу ли я использовать программу прогнозирования для линейных конгруэнтных генераторов, чтобы предсказывать следующие числа в последовательности.

Это было полезно?

Решение

Посмотреть на себя: C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\rand.c

(Или используйте %VCINSTALLDIR%\crt\src\rand.c если вы работаете из командной строки VC.)

(Предполагая, что у вас есть по крайней мере стандартная версия из ВК.Это две линии.Я бы разместил это, но не уверен, позволяет ли это лицензия.)

Другие советы

Если память не изменяет, да, это линейный конгруэнтный генератор, но он возвращает остаток от большего результата, что увеличивает сложность прогнозирования следующего числа (до такой степени, что вам, вероятно, понадобится гораздо большая выборка, чем три выхода, чтобы сделать так надежно).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top