Há alguma forma de enganar o gerador de números aleatórios?
Depende do que você quer dizer com "enganar" e o que você quer dizer com "gerador de números aleatórios"
I'usará a seguinte interpretação. Por favor, esclareça se você quis dizer algo mais.
- Cheat: adivinhe a saída do gerador de números aleatórios com uma probabilidade maior do que a sugerida pelo gerador's distribuição de saída esperada.
- Gerador de números aleatórios: Um gerador de números pseudo-aleatórios (PRNG) como você normalmente encontra em muitas linguagens de programação.
O último ponto é importante: se você está usando uma verdadeira fonte de aleatoriedade, então você pode't realmente enganá-lo a menos que alguém comprometa sua integridade (pela definição de enganar no primeiro ponto).
Para prever a saída de um PRNG, você precisa saber algo sobre o algoritmo que ele usa, e seu estado interno. Se você observar um número suficiente de saídas de um PRNG, você pode ser capaz de reconstruir algum ou todo o seu estado interno.
Porque os PRNGs são determinísticos, se você tiver o seu estado interno completo, você pode exatamente prever a sua saída. Se você tiver um subconjunto do seu estado interno, você pode excluir um subconjunto dos possíveis outputs.
Quantos outputs você precisa observar para reconstruir esse estado interno?
Se o PRNG for bem construído, esse número pode ser bastante grande. Pode até ser intractavelmente grande. E, se o PRNG ingerir um estado novo, não determinístico enquanto corre, você pode nunca aprender o suficiente para prever qualquer valor particular retornado dele.
Mas, e se ele for't construído bem? Um PRNG simples pode ser fácil de prever depois de observar apenas algumas saídas. Se você tiver, digamos, um RNG linear congruente e você retornar a semente inteira como resultado, você só precisa de um output.
P>Even se ele's construído razoavelmente bem, o PRNG pode ter outros pontos fracos.
Por exemplo, um PRNG pode ter várias deficiências que fazem com que seu output tenha certas propriedades estatísticas que você pode explorar, tais como "alta correlação entre cada número N," ou "nunca produz mais do que N valores iguais em uma linha". (Este último importa mais para os fluxos de saída binários.)
Então, existe uma maneira? Sim, possivelmente, mas depende dos detalhes da implementação.
Artigos semelhantes
- Os dados em Ludo King são realmente aleatórios? Parece que encontro tantos padrões nos números que aparecem nos dados.
- Qual é uma forma de conseguir moedas ilimitadas no Pokemon Go sem qualquer pesquisa, ou gerador de verificação humana?
- Nem todos os números são tão imaginários como os números imaginários?
- Porque é que alguns livros do Kindle não têm números de página? Existe uma maneira de traduzir os números de página para locais?