Você está ciente ou criou algum algoritmo prático "prático", simples de aprender, que permite aos humanos gerar números aleatórios (um tanto "verdadeiros")? Por "in-head" quero dizer .. de preferência sem ferramentas ou dispositivos externos. Além disso, é desejável uma saída alta (muitos números aleatórios por minuto).
Perguntou isso no SO, mas não conseguiu muito interesse. Talvez isso seja mais adequado para programadores.
self-improvement
algorithms
random
Magnus Wolffelt
fonte
fonte
Respostas:
Aqui está um algoritmo de George Marsaglia :
fonte
Confira este artigo sobre Geomancia . Especificamente a seção sobre a geração de gráficos geomânticos . Envolve uma técnica de geração de número pseudo-aleatório usando dígitos binários e algum cálculo recursivo simples. Parece que você poderia fazer isso em sua cabeça com bastante facilidade (embora um pedaço de papel ajudasse).
Disclaimer: Eu não tentei eu mesmo; quando preciso de um número aleatório o suficiente, obtenho alguma saída
/dev/random
, usorand
em qualquer idioma que eu tenha à mão ou rolo meu confiável d20.Se você é um prodígio da matemática, o método do quadrado do meio é um método computacionalmente leve, se bem visivelmente não confiável.
fonte
Eu acho que uma suposição razoável é que você precisa confiar na grande quantidade de informações verbais que armazena em seu cérebro. A fonte pode ser qualquer coisa, letras de músicas, poemas, esboços de Monty Python, mas deve ser algo que você saiba de cor.
Então você tem que selecionar uma parte bastante aleatória, eliminando tanto quanto possível o viés inconsciente. Uma maneira de fazer isso, por exemplo, seria selecionar uma música, escolher um número
k
entre 10 e 20 e, em seguida, encontrar ak
letra th em suas letras.Obviamente, isso não fornecerá uma distribuição uniforme por si só, já que a frequência das letras é diferente, mas é uma letra aleatória, no entanto, ou pelo menos o mais próxima que eu acredito que seja possível sem uma fonte externa.
Atualização: A propósito, quando as pessoas são solicitadas a escrever uma sequência aleatória de lançamentos de moedas, o erro mais comum é, de longe, tornar sua sequência "muito aleatória": séries de resultados idênticos serão muito curtas, o que é uma duração simples análise irá revelar. Este método visa principalmente evitar essa armadilha. É claro que outras anomalias podem surgir da sombra desse viés de duração da execução, mas você precisará de experimentos adequados para encontrá-las. Ironicamente, um algoritmo para gerar números aleatórios pensando apenas não pode ser encontrado pensando sozinho.
fonte
Experimente o seu relógio.
Eu faço isso se precisar de um número aleatório que é um fator de 60 (segundos). Tome o módulo apropriado a qualquer hora. 16:17:23 PM, simulando uma rolagem de dados, passa a 5.
fonte
Excelente pergunta. Receio que uma boa resposta possa ser muito difícil.
Mas, para começar, é muito fácil gerar aleatoriedade "verdadeira" quando duas pessoas estão envolvidas: basta deixar uma delas contar silenciosamente em seu módulo de cabeça algum número, e a outra dizer "pare" após um intervalo arbitrário. Posteriormente, esse número pode ser transformado em outras distribuições usando métodos padrão.
Para tornar esse método robusto, o módulo não deve ser muito grande, caso contrário, haverá um forte viés contra pequenos números. Eu realmente estaria interessado em ver se existe algum trabalho analisando as propriedades estocásticas desse método.
fonte
Esta é uma questão complexa; Vou tentar explicar um pouco sem me afastar muito do mato.
Primeiro, temos que perguntar "o que é a verdadeira aleatoriedade"? Tais discussões rapidamente degeneram em águas filosóficas, mas a essência é esta: "é o universo verdadeiramente aleatório"? Em outras palavras, se você quantifica tempo e matéria, pode calcular o próximo estado do universo a partir do atual? Se sim, então o universo é determinístico e não há aleatoriedade verdadeira (veja o que quero dizer com "filosófico"?)
Como a "aleatoriedade verdadeira" é difícil de definir, geralmente aceitamos a "pseudo-aleatoriedade". Isso geralmente é necessário ao gerar números "aleatórios" em um computador, é claro.
O gerador mais simples de números pseudo-aleatórios seria algo como o famoso algoritmo "9 .. 9 .. 9 .." de Dilbert. Mas, intuitivamente, não parece muito bom (o que obviamente é a piada). Os estatísticos desenvolveram uma série de testes para dizer se uma sequência de resultados supostamente aleatórios é "boa". Comece com a página da wikipedia para "teste do qui quadrado" e você pode passar uma tarde lendo sobre esses testes.
Um algoritmo de computador simples como um "gerador congruencial linear" produz números bons o suficiente para um teste qui-quadrado (você ainda precisa "semear" esse algoritmo de alguma coisa).
O próximo passo em "bondade" é "aleatoriedade criptograficamente forte", o que significa que, dada uma sequência a1, a2, ... você não pode prever o próximo número na sequência com "probabilidade razoável", a menos que você use muita computação. Esses números são chamados às vezes de "pseudo-aleatório computacionalmente". Uma maneira comum de obter essa sequência é através de uma "cadeia de hash" assim: a1 = SHA512 (a2), a2 = SHA512 (a3), ... Como acreditamos (com base na experiência, não na prova matemática) que o SHA512 é computacionalmente difícil de inverter, acreditamos que a2 é "impossível" de prever, dado apenas a1.
Então agora surge a pergunta: qual é a melhor coisa que os humanos podem fazer sob as regras estipuladas na sua pergunta? Os seres humanos são notoriamente ruins em gerar aleatoriedade; costumava haver um site em que você tentava gerar lançamentos de moedas digitando "aleatoriamente" H, T, T, H, H, T, T etc. como se estivesse lançando uma moeda (mas você faz isso em sua cabeça). Depois de um tempo, o site começaria a prever seus flips melhor que 50% das vezes (usando um modelo Markov oculto). Nós somos apenas ruins nisso.
Existem maneiras de melhorar a situação usando várias técnicas de mistura que provavelmente são possíveis em sua cabeça. E existem até aplicativos que eu poderia imaginar por que você pode querer isso (prisioneiro político quer criptografar uma mensagem para aliados externos). Mas acho que este post é longo o suficiente. :)
fonte
A verdadeira razão da proliferação de RNGs baseados em ferramentas é que um bom algoritmo direto para geração de números aleatórios ainda está para ser desenvolvido .
Felizmente, os geradores de números aleatórios portáteis - incluindo moedas para o flop, dados (com vários números de facetas) para rolar, cartões para a colheita e canudos para o desenho - são relativamente fáceis de obter a baixo custo. Além disso, para os tecnófilos entre nós, existem algumas boas simulações dessas ferramentas disponíveis para a maioria das plataformas móveis.
Eu recomendaria sinceramente qualquer um desses sobre qualquer alternativa de produtos de carne.
fonte
Altamente randomizado, grande quantidade por minuto e gerado por humanos? Não vai acontecer
Os principais problemas com os quais você vai se deparar são
Isso levou muitos criptografadores a abandonar técnicas "in-head" em favor de processos externos aleatórios, porque era muito simples elaborar padrões com base em números "in-head".
Fora do tópico, mas interessante
Embora não seja um mecanismo para gerar números aleatórios em sua cabeça, o algoritmo Solitaire (como retratado no Cryptonomicon de Neal Stephenson ) demonstra como é difícil usar números aleatórios para fins criptográficos. Requer apenas um baralho de cartas comum para criar uma saída razoavelmente segura, mas o método é bastante complicado.
fonte
Afaste-se da mesa e vá para Las Vegas.
A humanidade tem dezenas de procedimentos aleatórios. Você pode ver todos eles em Las Vegas.
Você tem círculos girando. Você tem cubos caindo. E você embaralhou os tokens. Todos eles funcionam maravilhosamente bem.
Cubos são talvez os mais antigos. Aparentemente, havia palitos alongados de quatro lados usados em um ponto. Knucklebones cúbicos simétricos de ovelhas eram populares há milênios. Temos usado esses tipos de randomizadores desde - provavelmente - mais ou menos na mesma época em que desenvolvemos a linguagem.
http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8
"Qualquer um que considere métodos aritméticos de produzir dígitos aleatórios está, é claro, em um estado de pecado"
--- John von Neumann
fonte
Não consigo pensar em nada. Na verdade, eu esperaria que qualquer coisa que surgisse tivesse tantos preconceitos que seria inútil.
Se eu precisar de números aleatórios, geralmente jogo dados.
fonte
Você está pedindo um LCM que possa fazer na sua cabeça? Observe que a ideia de que isso é melhor do que dados permanece absurda.
No entanto, isso é tão aleatório quanto qualquer algoritmo finito, definido e eficaz pode ser.
http://www.vias.org/simulations/simusoft_lincong.html
http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htm
U_ {k + 1} = (a \ vezes U_k + b) mod (m + 1).
É mais fácil ver o que isso está fazendo se escolhermos pequenos valores a = 5, b = 1 em = 7. Você deve conseguir fazer isso em sua cabeça.
fonte