Подтвердить что ты не робот

Что такое семя в смысле генерации случайного числа?

Что такое семя в терминах генерации случайного числа?

Мне нужно генерировать сотни-тысячи случайных чисел, я много читал об использовании "семени". Что такое семя? Это семя, откуда начинаются случайные числа? Например, если я установил, что мое семя будет равным 5, оно будет генерировать числа от 5 до моего предела? Поэтому он никогда не даст мне 3, например.

Я использую С++, поэтому, если вы предоставите какие-либо примеры, было бы неплохо, если бы это было на С++.

Спасибо!

4b9b3361

Ответ 1

То, что обычно называют последовательностью случайных чисел в действительности, является "псевдослучайной" последовательностью чисел, поскольку значения вычисляются с использованием детерминированного алгоритма, и вероятность не играет никакой реальной роли.

"Семя" является отправной точкой для последовательности, и гарантией является то, что если вы начнете с одного и того же семени, вы получите ту же последовательность чисел. Это очень полезно, например, для отладки (когда вы ищете ошибку в программе, для которой вам нужно воспроизвести проблему и ее изучить, не детерминированной программе было бы гораздо сложнее отладить, потому что каждый прогон был бы иным).

Если вам нужна просто случайная последовательность чисел и ее не нужно воспроизводить, просто используйте текущее время в качестве семени... например, с помощью

srand(time(NULL));

Ответ 2

Итак, скажем так:

если вы и ваш друг установите семя равно одному числу, к тому времени вы и ваш друг получите одинаковые случайные числа. Итак, если все мы напишем эту простую программу:

#include<iostream>
using namespace std;
void main () {
    srand(0);
    for (int i=0; i<3; i++){
        int x = rand()%11;          //range between 0 and 10
        cout<<x<<endl;
    }
}

Все мы получим одинаковые случайные числа, которые (5, 8, 8).

И если вы хотите каждый раз получать разное число, вы можете использовать srand (time())