Est-il possible de prédire le nombre suivant dans un générateur de nombres?
Avec la programmation, il n'est jamais "aléatoire". Même le générateur aléatoire utilise un algorithme pour prédire un nombre aléatoire. Mais, si le fait de connaître la méthode de génération, est-il possible, disons, de prédire les 5 prochains numéros qui seront générés?
Il vous suffit d'exécuter le générateur de nombre de nouveau. Qui vous donnera le numéro suivant.
Donc, si je suis en train d'utiliser le même générateur sur la même gamme de chiffres, je reçois toujours le même résultat? Comment est-elle différente de faire un tableau statique de nombres, alors?
Oui, avec difficulté très variable sur le RNG algorithme utilisé.
Ce n'est pas vraiment différent que d'avoir un tableau statique de prédéterminé de nombres aléatoires, à l'exception de l'algorithme prend comme 100 octets, et le tableau statique pour
De nos jours la plupart des gens utilisent un nombre de Mersenne twister, qui prendrait ~2*10^19935 octets. Pour un sens de l'échelle, il y a env ~2*10^82 atomes dans le obvervable univers.
Donc, si je suis en train d'utiliser le même générateur sur la même gamme de chiffres, je reçois toujours le même résultat? Comment est-elle différente de faire un tableau statique de nombres, alors?
Oui, avec difficulté très variable sur le RNG algorithme utilisé.
Ce n'est pas vraiment différent que d'avoir un tableau statique de prédéterminé de nombres aléatoires, à l'exception de l'algorithme prend comme 100 octets, et le tableau statique pour
rand()
dans GCC prendrait ~16 GO.De nos jours la plupart des gens utilisent un nombre de Mersenne twister, qui prendrait ~2*10^19935 octets. Pour un sens de l'échelle, il y a env ~2*10^82 atomes dans le obvervable univers.
OriginalL'auteur | 2013-06-28
Vous devez vous connecter pour publier un commentaire.
Oui, il est possible de prédire quel nombre d'un générateur de nombre aléatoires produire suivant. J'ai vu de ce qu'on appelle fissuration, rupture, ou attaquer le RNG. Recherche pour l'un de ces termes, ainsi que la "générateur de nombre aléatoire" devrait tourner un grand nombre de résultats.
Lire Comment Nous avons Appris à Tricher au Poker en Ligne: Une Étude de la Sécurité des Logiciels pour un excellent témoignage de première main de la façon dont un générateur de nombres aléatoires peuvent être attaqués. Pour résumer, les auteurs ont compris ce générateur de nombres aléatoires a été utilisé basé sur un mauvais brassage algorithme utilisé par un site de poker en ligne. Ils ont ensuite découvert le RNG de semences par échantillonnage des mains qui ont été traitées. Une fois qu'ils avaient l'algorithme et de la semence, ils savaient exactement comment le pont sera organisée plus tard, après le mélange.
Regardez la documentation de Random. 10 est la portée de cette déclaration, pas de la graine. Créer deux
Random
objets avec la même graine et ils vont vous donner la même séquence de nombres aléatoires.OriginalL'auteur Bill the Lizard
En supposant un déterministe algorithhm. Créer deux identiques générateurs de nombres aléatoires. Poser la première que la seconde va produire suivant -- 5 fois.
OriginalL'auteur Dale Wilson
La grande majorité des "générateurs de nombres aléatoires" sont en réalité des "pseudo-générateurs de nombres aléatoires", ce qui signifie que, étant donné le même point de départ (graines) ils vont reproduire la même séquence. En théorie, par l'observation de la séquence de nombres sur une période de temps (et la connaissance de l'algorithme), on peut prédire le prochain numéro, un peu comme le "craquage" de chiffrement.
Le temps, les efforts requis pour ce faire varie grandement en fonction de l'algorithme spécifique, bien sûr. Rng qui sont "cryptographique" sera beaucoup plus difficile à prévoir que votre jardin-variété de RNG. Mais pour la plupart des utilisations de nombres aléatoires ce genre de prévisibilité n'est pas un problème.
OriginalL'auteur Hot Licks