В идеальном мире Math.random () был бы абсолютно случайным, с одним выходом, полностью независимым от другого, что (предполагая, что p = вероятность появления любого данного числа) приводит к вероятности p ^ 2 для любогозначение повторяется сразу за другим (как уже говорили другие).
На практике люди хотят, чтобы Math.random был быстрым, что означает, что движки используют генераторы псевдослучайных чисел.Существует много различных типов PRNG, но самым основным является линейный конгруэнтный генератор, который в основном представляет собой функцию в следующем виде:
s(n + 1) = some_prime * s(n) + some_value mod some_other_prime
Если такой генератор используется, вы не увидите значениеповторяется, пока вы не позвоните random()
some_other_prime
раз.Это вам гарантировано.
Относительно недавно, однако стало очевидно, что этот тип поведения (в сочетании с заполнением PRNG с текущим временем) может использоваться для отслеживания некоторых форм, что привело к тому, что браузеры выполняют ряд операций.вещи, которые означают, что вы не можете предполагать что-либо о последующих random()
вызовах.