Podemos gerar números aleatórios usando números irracionais como π e e?


21

Números irracionais como π , e e 2 têm uma sequência única e não repetida após o ponto decimal. Se extrairmos onésimo dígito desses números (em quené o número de vezes que o método é chamado) e fizermos um número com os dígitos atuais, não devemos obter um gerador de números aleatórios perfeito? Por exemplo, se estivermos usando2 ,eeπ, o primeiro número é 123, o segundo é 471, o próximo é 184 e assim por diante.


30
Você tem uma definição estranha de "aleatório" em sua cabeça. "Aleatório" significa "imprevisível". Como sua sequência é imprevisível? Que definição de "aleatório" você tem em mente? Talvez o que você está chamando de "aleatório" tenha outro nome.
Eric Lippert

7
Observe que o algoritmo spigot pode ser usado para gerar qualquer dígito hexadecimal em pi, sem a necessidade de gerar dígitos anteriores.
rcgldr 11/04

10
@EricLippert Todos os geradores de números pseudoaleatórios não são previsíveis?
Federico Poloni 11/04

7
O termo surgiu algumas vezes: este é um "número aleatório psuedo" e não um "número aleatório". É um número gerado algoritmicamente (não aleatório), mas que possui muitas propriedades desejáveis ​​que os números aleatórios possuem. Outro algoritmo é o algoritmo "NYC phonebook", no qual você desce a lista de números de telefone em ordem alfabética e obtém o último dígito de cada um deles. Não aleatório, mas pseudo-aleatório com alguns comportamentos estatísticos bastante agradáveis!
Cort Ammon - Restabelecer Monica

5
"Pseudo" significa "semelhante a, mas não". Portanto, números pseudo-aleatórios são semelhantes, mas não números aleatórios. Portanto, não estou seguindo sua linha de pensamento aqui. Agora, os PRNGs com força de criptografia têm a propriedade desejável de que, se o estado interno for desconhecido para o invasor, nenhum teste estatístico que possuamos possa distinguir um PRNG de criptografia de um RNG verdadeiro e isso inclui sua falta de previsibilidade. Mas os dígitos de pi não têm essa propriedade; eles são altamente previsíveis.
Eric Lippert

Respostas:


17

A desvantagem mais óbvia é a complexidade desnecessária dos algoritmos PRNG com base em números irracionais. Eles exigem muito mais cálculos por dígito gerado do que, digamos, um LCG; e essa complexidade geralmente aumenta à medida que você avança na sequência. O cálculo de 256 bits de π no bit de dois quadrilionésimos levou 23 dias em 1000 computadores (em 2010) - uma complexidade bastante proibitiva para um RNG.


47

Para qualquer definição razoável de perfeito, o mecanismo que você descreve não é um gerador de números aleatórios perfeito.

  • Não repetir não é suficiente. O número decimal 0.101001000100001 não é repetitivo, mas é um terrível gerador de dígitos aleatórios, pois a resposta é "sempre" zero, ocasionalmente um, e nunca mais nada.

  • Na verdade, não sabemos se cada dígito ocorre igualmente com frequência na expansão decimal de π ou  e (embora suspeitemos que sim).

  • Em muitas situações, exigimos que números aleatórios sejam imprevisíveis (de fato, se você perguntasse a uma pessoa aleatória o que "aleatório" significa, eles provavelmente diriam algo sobre imprevisibilidade). Os dígitos das constantes conhecidas são totalmente previsíveis.

  • Geralmente, queremos gerar números aleatórios razoavelmente rapidamente, mas gerar dígitos sucessivos de constantes matemáticas tende a ser bastante caro.

  • No entanto, é verdade que os dígitos de πe parecem estatisticamente aleatórios, no sentido de que todas as sequências possíveis de dígitos parecem ocorrer com a frequência que deveria. Assim, por exemplo, cada dígito ocorre muito perto de uma vez em dez; cada sequência de dois dígitos muito próxima a uma em cem e assim por diante.


11
Quanto ao terceiro ponto, deve haver algum tipo de entrada 'secreta' no processo de geração para que seja imprevisível (o próprio processo de geração deve ser determinístico se não quisermos confiar em outro gerador de números aleatórios). Essa entrada extra costuma ser chamada de semente .
Lagarto discreto

6
@Discretelizard Isso é verdade, mas não há muito espaço para propagação além de "retornar dígitos sucessivos começando pela posição ". No momento em que você já viu 2 log s dígitos, que a seqüência ocorre apenas algumas vezes nos primeiros s 2 dígitos do π , por isso é único dentro do primeiras s dígitos com alta probabilidade e você sabe a semente. s2registross2πs
David Richerby

2
@ Barmar: Nesse ponto, você deve perguntar se essa técnica é realmente mais eficiente (e mais eficiente em termos de espaço) do que um PRNG "padrão" seria.
Kevin

2
Os dígitos de pi ou e são completamente imprevisíveis, especialmente porque o visualizador / destinatário / disjuntor de código etc. não tem idéia de quanto tempo na sequência você já está. Se você começar com o número de dígito 237423 da sequência, levará tanto tempo para descobrir, que será aleatório.
Reversed Engineer

10
@DaveBoltman Se não estamos fazendo algo como criptografia, ninguém vai se importar o suficiente para se dar conta disso. Se estamos fazendo criptografia, é uma suposição padrão de que seu adversário sabe qual algoritmo você está usando e, nesse caso, inclui o número irracional da sequência e como você está escolhendo os dígitos, exceto por qualquer parâmetro como "começa no dígito ". Se o adversário não souber qual número você está usando, certamente, o próximo dígito pode ser literalmente qualquer coisa, mas eles acham que é s e o jogo acabou. meu aniversário
David Richerby

29

É criptograficamente inútil porque um adversário pode prever cada dígito. Também consome muito tempo.


11
OP nunca menciona criptografia ...
AnoE 10/04

13
@AnoE Então? O fato de esse processo ser criptograficamente inútil ainda é relevante porque o cripto é um usuário ávido de aleatoriedade. Se você abrir os dispositivos /dev/randome /dev/urandomalguém invariavelmente abrirá a criptografia.
Greg Schmit - Restabelecer Monica

6
Você ficaria surpreso ao ver como a segurança criptográfica é inútil na geração PRNG em tempo real. números irracionais são freqüentemente usados ​​em GPN PRNGs. Existem muitas aplicações nas quais a segurança do seu PRNG é simplesmente irrelevante. O que importa em algo como geração de ruído coerente é a qualidade da distribuição e com que frequência seu período se repete, e efeitos de correlação devido a sementes adjacentes (o que exigiria a correção de misturadores de avalanches). Honestamente, sua resposta está errada, não pertence aqui e provavelmente deve ser excluída.
whn

6
Esta é uma outra resposta à pergunta. Observe que o OP da pergunta vinculada usa números aleatórios para semear uma análise de Monte Carlo. Uma atualização para abordar a pergunta feita deve ser considerada. mathoverflow.net/questions/26942/...
CramerTV

8
Certamente, existem muitos aplicativos em que os PRNGs não precisam ser criptograficamente seguros. Mas o OP não perguntou se era útil para alguns propósitos, eles perguntaram se esse método era um "RNG perfeito". Embora eles não tenham esclarecido o que querem dizer com "perfeito", o fato de ser inadequado para um dos principais usos dos RNGs parece muito relevante para responder a essa pergunta.
Geoffrey Brent

7

( atualizado depois que muitas pessoas apontaram que o gerador de números aleatórios não é a mesma coisa que uma única sequência normal)

Se você perguntar se é possível obter uma sequência normal de π (ou seja, todos os números aparecem uniformemente), existem várias respostas no excesso de matemática. Por exemplo, a resposta sobre Distribuição dos dígitos do Pi diz:

... acredita - se que π é um número normal (~ distribuição uniforme de cada sequência de dígitos).

Para dados de distribuição de dígitos, consulte, por exemplo, http://www.eveandersson.com/pi/precalculated-frequencies ou https://thestarman.pcministry.com/math/pi/RandPI.html (primeiros 1000 dígitos):

insira a descrição da imagem aqui

No mathoverflow, também existem boas respostas em:


3
Se você acredita que a pergunta é uma cópia, então por que está respondendo? Você deve simplesmente sinalizá-lo, não reforçar o comportamento indesejável de postagem.
dkaeae 10/04

8
@dkaeae Não há suporte para duplicatas de perguntas em outros sites. Além disso, a mesma pergunta em sites diferentes pode obter respostas diferentes. Nesse caso, um site como o de matemática pode não levar em consideração as preocupações de segurança. Veja também esta resposta . Observe que desencorajamos fazer a mesma pergunta em vários sites ao mesmo tempo, pois isso tende a levar a esforços desperdiçados. Mas a mesma pergunta de pessoas diferentes em momentos diferentes em sites diferentes geralmente é boa.
Lagarto discreto

6
Infelizmente, apenas porque um número é normal, não significa que a saída de seus dígitos forneça um bom RNG. Os resultados desse RNG ainda são totalmente previsíveis. Se isso é aceitável, pode depender do aplicativo. Portanto, não acho tão simples quanto dizer "pi é normal, caso encerrado".
DW

2
Isso é apenas observação empírica para os primeiros dígitos? O que significa isso?
marshal craft

1
@DW Mencionei que pretendo usar uma combinação de números como π e e. E, por favor, diga como a saída será previsível se não soubermos até que ponto a sequência foi percorrida pelo gerador.
Abhradeep Sarkar

1

Em geral, essa abordagem não funciona: "aleatoriedade" não significa que você tenha muitos dígitos diferentes, mas também há outros aspectos. Por exemplo, um teste clássico é verificar se todas as combinações de dois ou três dígitos etc. ocorrem com a mesma frequência. Este seria um teste muito simples, que pode excluir resultados óbvios não aleatórios, mas ainda é muito simplista para verificar se há realmente um comportamento aleatório.

Consulte a página da Wikipedia sobre testes de aleatoriedade como uma coleção de links para fontes primárias sobre isso. Eles mencionam uma boa quantidade de conceitos que parecem bastante complicados; não é tão importante entrar em detalhes profundos sobre isso - mas é claro que não é intuitivamente possível declarar um número específico como uma boa fonte para esses dígitos.

Em uma nota positiva: para um número irracional específico, você é livre para apenas tentar; ou seja, calcule o número com um grau suficientemente grande de dígitos e execute-o em todos os testes conhecidos (existem ferramentas para isso, veja o link acima). Se a medida for boa o suficiente para o seu caso de uso, e se você estiver ciente de que isso é obviamente inútil para aplicativos criptográficos, sempre obtenha os mesmos números se você começar de novo e que a qualidade poderá diminuir se você superar a nque escolheu para testar a aleatoriedade, você pode usar esses números. Mas será muito melhor usar um gerador de números aleatórios dedicado (pseudo-); e nada supera uma boa fonte física de aleatoriedade.


4
πe

3
A resposta de Ayrat tem links para outros sites em que matemáticos fizeram esses testes. Eles acreditam, mas não provaram, que π atende aos testes estatísticos.
Barmar 10/04

Sim, foi isso que eu quis dizer com meu último parágrafo - apenas tentar empiricamente vale a pena; mas rigorosamente não foi provado (ou não pode ser simplesmente considerado verdadeiro) para irracionais arbitrários de "aparência complicada". @DavidRicherby, @ Barmar
AnoE 12/04

1

Ele fornece um bom número aleatório até você perceber como foi produzido, como acontece com muitos números pseudo-aleatórios. Os números irracionais (não algébricos e não transcendentais) que você escolheu são comuns e mais fáceis de adivinhar do que outros. Não vejo nenhum problema com esse método, desde que você escolha geradores menos comuns.


4
Não há problema, exceto a grande ineficiência, o fato de você estar confiando em qualquer adversário sem saber qual é o seu algoritmo, o fato de que uma má escolha de gerador pode levar a uma sequência muito ruim, ...
David Richerby

4
2πe

Um número transcendental é um número real que não é algébrico. Não é possível que um número real seja não algébrico e não transcendental.
Brady Gilg
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.