Comment Math.random () fonctionne-t-il en javascript?
Récemment, j'ai trouvé comment obtenir un nombre aléatoire via google, et il m'a fait penser comment Math.random()
travail. Donc ici, je suis, je ne peux pas comprendre comment ils ont fait les Mathématiques.random (), sauf qu'ils ont utilisé un temps comme chose personne ne sait comment JavaScript Math.random()
travaux ou un équivalent?
source d'informationauteur user2925490
Vous devez vous connecter pour publier un commentaire.
Mathématiques.random() renvoie un Nombre valeur avec signe positif, supérieur ou égal à 0 mais inférieur à 1, choisi de manière aléatoire ou pseudo-aléatoire avec environ une distribution uniforme sur la plage, à l'aide d'un dépendant de l'implémentation de l'algorithme ou de la stratégie.
Ici V8 de la mise en œuvre:
Source: http://dl.packetstormsecurity.net/papers/general/Google_Chrome_3.0_Beta_Math.random_vulnerability.pdf
Ici sont un couple de sujet sur StackOverflow:
C'est correct qu'ils utilisent un "temps comme chose". Un générateur pseudo-aléatoire est généralement ensemencées à l'aide de l'horloge système, parce que c'est une bonne source d'un nombre qui n'est pas toujours le même.
Une fois que le générateur aléatoire est ensemencé avec un certain nombre, il va générer une série de nombres qui, en fonction de la valeur initiale, mais de telle manière qu'ils semblent aléatoires.
Un simple générateur aléatoire (qui a effectivement été utilisé dans les langages de programmation a tout à l'arrière) est d'utiliser un nombre premier dans un algorithme comme ceci:
Ceci va produire une série de numéros de sauter en arrière et en avant, de façon apparemment aléatoire. Par exemple:
Le générateur aléatoire dans le Javascript est juste un peu plus complexe (pour donner une meilleure distribution) et utilise un plus grand nombre (car il doit produire un nombre qui est d'environ 60 bits au lieu de 16), mais il suit le même principe de base.