Pergunta

Estou tentando prever a saída de um programa que usa a função rand () do msvcrt para gerar a face de três dados. Eu acredito que o código é algo como:dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;, e eu queria saber se poderia usar um programa de previsão para geradores congruentes lineares para prever os próximos números na sequência.

Foi útil?

Solução

Veja por si mesmo: C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\rand.c

(Ou use %VCINSTALLDIR%\crt\src\rand.c Se você estiver fugindo de um prompt de comando VC.)

(Supondo que você tenha pelo menos a versão padrão de vc. São duas linhas. Eu o publicaria, mas não tinha certeza se a licença permite.)

Outras dicas

Se a memória serve, sim, é um gerador congruente linear - mas o que retorna é o restante de uma saída maior, o que aumenta a dificuldade de prever o próximo número (a ponto de você provavelmente precisar de uma amostra muito maior do que três saídas para fazer tão confiável).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top