Êtes-vous au courant ou avez-vous mis au point des algorithmes «en-tête» pratiques, faciles à apprendre, qui permettent aux humains de générer (en quelque sorte des «vrais») nombres aléatoires? Par "en tête" je veux dire .. de préférence sans outils ni appareils externes. En outre, une sortie élevée (plusieurs nombres aléatoires par minute) est souhaitable.
Demandé cela sur SO mais il n'a pas suscité beaucoup d'intérêt. Peut-être que cela convient mieux aux programmeurs.
self-improvement
algorithms
random
Magnus Wolffelt
la source
la source
Réponses:
Voici un algorithme de George Marsaglia :
la source
Consultez cet article sur la géomancie . Plus précisément, la section sur la génération de cartes géomantiques . Il s'agit d'une technique de génération de nombres pseudo-aléatoires utilisant des chiffres binaires et un calcul récursif simple. Il semble que vous puissiez le faire facilement dans votre tête (bien qu'un morceau de papier puisse vous aider).
Avertissement: je n'ai pas essayé moi-même; quand j’ai besoin d’un nombre suffisamment aléatoire, je récupère une sortie, je l’
/dev/random
utiliserand
dans la langue que j’ai sous la main ou j’envoie mon fidèle d20.Si vous êtes un prodige des mathématiques, la méthode du carré moyen est une méthode assez peu travaillée, même si elle semble peu fiable.
la source
Je pense qu'une hypothèse raisonnable est que vous devez vous fier à la grande quantité d'informations verbales que vous stockez dans votre cerveau. La source peut être n'importe quoi, paroles de chansons, poèmes, croquis de Monty Python, mais ce doit être quelque chose que vous connaissez par cœur.
Ensuite, vous devez en sélectionner une partie assez aléatoire en éliminant le plus possible les préjugés inconscients. Une façon de faire cela, par exemple, serait de sélectionner une chanson, de choisir un nombre
k
compris entre 10 et 20, puis de trouver lak
lettre e dans ses paroles.Évidemment, cela ne vous donnera pas une distribution uniforme en soi, car la fréquence des lettres est différente, mais c’est quand même une lettre aléatoire, ou du moins aussi proche que je le crois possible sans source externe.
Mise à jour: Au fait, quand on demande aux gens d'écrire une séquence aléatoire de lancers de pièces de monnaie, l'erreur la plus commune est de loin de rendre votre séquence "trop aléatoire": des suites de résultats identiques seront trop courtes, ce qui est une longueur simple. l'analyse révélera. Cette méthode vise principalement à éviter ce piège. Bien entendu, d’autres anomalies peuvent résulter de l’ombre de ce biais de longueur de parcours, mais vous aurez besoin d’expériences appropriées pour les détecter. Ironiquement, un algorithme permettant de générer des nombres aléatoires en pensant seul ne peut être trouvé en pensant seul.
la source
Échantillon de votre montre
Je le fais si j'ai besoin d'un nombre aléatoire multiplié par 60 (secondes). Prenez le modulo approprié, quelle que soit l'heure. 16h17: 23 heures, simulant un jet de dé, devient 5.
la source
Excellente question. Je crains qu'une bonne réponse ne soit très difficile.
Mais pour commencer, il est assez facile de générer un «vrai» caractère aléatoire lorsque deux personnes sont impliquées: il suffit de laisser l’une des personnes compter silencieusement dans leur module modulaire et l’autre dit «s’arrêter» après un intervalle arbitraire. Ensuite, ce nombre peut être transformé en d'autres distributions à l'aide de méthodes standard.
Pour que cette méthode soit robuste, le module ne doit pas être trop grand, sinon il y aura un fort biais contre les petits nombres. Je serais vraiment intéressé de voir s'il existe des travaux analysant les propriétés stochastiques de cette méthode.
la source
C'est une question complexe. Je vais essayer d'expliquer un peu sans trop m'égarer dans les mauvaises herbes.
Tout d’abord, nous devons nous demander "quel est le véritable caractère aléatoire"? De telles discussions dégénèrent rapidement en eaux philosophiques, mais l'essentiel est la suivante: "l'univers est-il vraiment aléatoire"? En d'autres termes, si vous quantifiez le temps et la matière, pouvez-vous calculer le prochain état de l'univers à partir de l'état actuel? Si oui, alors l'univers est déterministe et il n'y a pas de véritable hasard (voyez-vous ce que je veux dire par "philosophique"?)
Parce que le "vrai hasard" est difficile à définir, nous nous contentons souvent de "pseudo-aléatoire". Ceci est généralement nécessaire lors de la génération de nombres "aléatoires" sur un ordinateur, bien sûr.
Le générateur de nombres pseudo-aléatoires le plus simple serait quelque chose du célèbre algorithme "9 .. 9 .. 9 .." de Dilbert. Mais intuitivement, cela ne semble pas très bon (ce qui bien sûr est la blague). Les statisticiens ont mis au point toute une série de tests pour déterminer si une séquence de sorties supposées aléatoires est "bonne". Commencez avec la page wikipedia pour "test du chi carré" et vous pourrez passer l'après-midi à vous renseigner sur ces tests.
Un algorithme informatique simple tel qu'un "générateur congruentiel linéaire" produit des nombres assez bons pour un test du khi-carré (vous devez néanmoins "ensemencer" cet algorithme à partir de quelque chose).
La prochaine étape dans "la qualité" est "le caractère aléatoire fort sur le plan cryptographique", ce qui signifie qu'avec une séquence a1, a2, ... vous ne pouvez pas prédire le nombre suivant dans la séquence avec une "probabilité raisonnable" sauf si vous utilisez beaucoup de calculs. Ces nombres sont parfois appelés "calculs pseudo-aléatoires". Une méthode courante pour obtenir une telle séquence consiste à utiliser une "chaîne de hachage" comme celle-ci: a1 = SHA512 (a2), a2 = SHA512 (a3), ... Puisque nous croyons (sur la base de l'expérience, pas de preuves mathématiques) que SHA512 est difficile à inverser en calcul, nous pensons que a2 est "impossible" à prédire étant donné a1.
Alors maintenant la question se pose, quelle est la meilleure chose que les humains peuvent faire selon les règles stipulées dans votre question? Les humains sont notoirement mauvais pour générer du hasard; Il existait un site Web qui vous permettait de générer des lancers de pièces en tapant "au hasard" H, T, T, H, H, T, etc. comme si vous jetiez une pièce de monnaie (mais vous le faites ta tête). Après un certain temps, le site Web commencerait à prévoir vos retournements mieux que 50% du temps (en utilisant un modèle de Markov caché). Nous sommes juste mauvais à cela.
Il existe des moyens d'améliorer la situation en utilisant diverses techniques de mélange qui sont probablement réalisables dans votre tête. Et il y a même des applications que je pourrais imaginer pour lesquelles vous pourriez vouloir cela (un prisonnier politique veut chiffrer un message à des alliés extérieurs). Mais je pense que ce post est assez long. :)
la source
La raison même de la prolifération des GNA basés sur des outils est qu’un bon algorithme en tête pour la génération de nombres aléatoires n’a pas encore été mis au point .
Heureusement, les générateurs de nombres aléatoires portables - y compris les pièces de monnaie pour le flop, les dés (avec différents nombres de facettes) pour rouler, les cartes pour la cueillette et les pailles pour le tirage - sont relativement faciles à obtenir à faible coût. De plus, pour les technophiles parmi nous, il existe quelques assez bonnes simulations de ces outils disponibles pour la plupart des plateformes mobiles.
Je recommanderais chaleureusement ces solutions à toutes les solutions de remplacement.
la source
Hautement aléatoire, grande quantité par minute et générée par l'homme? Ça ne va pas arriver
Les principaux problèmes que vous allez rencontrer sont
Cela a conduit de nombreux cryptographes à abandonner les techniques "en-tête" au profit de processus externes aléatoires, car il était trop simple d'élaborer des modèles basés sur des nombres "en-tête".
Hors sujet mais intéressant
Bien qu'il ne s'agisse pas d'un mécanisme permettant de générer des nombres aléatoires dans votre tête, l' algorithme Solitaire (décrit dans Cryptonomicon de Neal Stephenson ) montre à quel point il est difficile d'utiliser des nombres aléatoires à des fins cryptographiques. Cela nécessite seulement un jeu de cartes à jouer ordinaires pour créer une sortie raisonnablement sécurisée, mais la méthode à suivre est assez complexe.
la source
S'il vous plaît, éloignez-vous du bureau et allez à Las Vegas.
L’humanité a des dizaines de procédures de randomisation. Vous pouvez tous les voir à Las Vegas.
Vous avez des cercles en rotation. Vous avez des cubes culbutants. Et vous avez mélangé des jetons. Ils fonctionnent tous merveilleusement bien.
Les cubes sont peut-être les plus anciens. Apparemment, des bâtons allongés à 4 côtés ont été utilisés à un moment donné. Les articulations cubiques symétriques des moutons étaient populaires depuis des millénaires. Nous utilisons ce type de randomiseur depuis - probablement - à peu près à la même époque où nous avons développé le langage.
http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8
"Quiconque considère des méthodes arithmétiques pour produire des chiffres aléatoires est, bien sûr, dans un état de péché"
--- John von Neumann
la source
Je ne peux pas penser à aucun. En fait, je m'attendrais à ce que tout ce que vous proposez comporte autant de préjugés que cela ne vaut rien.
Si j'ai besoin de nombres aléatoires, je lance généralement des dés.
la source
Demandez-vous un LCM que vous pouvez faire dans votre tête? Notez que l'idée que c'est mieux que les dés reste absurde.
Cependant, ceci est aussi aléatoire que n'importe quel algorithme fini, défini et efficace peut l'être.
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 \ fois U_k + b) mod (m + 1).
Il est plus facile de voir ce que cela fait si nous choisissons de petites valeurs a = 5, b = 1 et m = 7. Vous devriez pouvoir le faire dans votre tête.
la source