Возьмите шесть листов бумаги и напишите на них цифры 1 - 6. Положите их в сумку и перемешайте. Теперь вылейте их из сумки и разложите на столе случайным образом.
Что говорит первый? Возможно 3! Хороший случайный результат! Отлично.
Что говорит второй? Возможно 5! Круто, тоже кажется довольно случайным.
Что говорит третий? Возможно 2! Сладкое.
Теперь, если вам нужно только три случайных числа, тогда все готово.
Что тебе в следующий раз понадобится три случайных числа?
Есть ли у вас:
- Снова посмотрите на первые три листа бумаги на вашем столе, или
- Положите кусочки бумаги обратно в пакет и перетасуйте их?
Второй, конечно! В противном случае вы получите те же результаты.
PRNG являются детерминированными . Они не совсем случайные. Они просто кормят вас своего рода заранее определенной последовательностью, по порядку. Сама последовательность выглядит как случайность, но для заданного начального числа фактический выбор последовательности уже сделан системой, когда вы сконструировали генератор.
Итак, когда вы создаете другой генератор с тем же начальным числом (или без начального числа, поэтому используется значение по умолчанию), вы снова получите те же три куска бумаги .
Способ использования PRNG состоит в том, чтобы создать один генератор, а затем продолжать спрашивать его о следующем «случайном» числе в последовательности. Вот почему вы делаете этот объект static
: так, чтобы он был создан один раз и повторно использован при последующих вызовах функции.