Что такое семя в смысле генерации случайного числа?
Что такое семя в терминах генерации случайного числа?
Мне нужно генерировать сотни-тысячи случайных чисел, я много читал об использовании "семени". Что такое семя? Это семя, откуда начинаются случайные числа? Например, если я установил, что мое семя будет равным 5, оно будет генерировать числа от 5 до моего предела? Поэтому он никогда не даст мне 3, например.
Я использую С++, поэтому, если вы предоставите какие-либо примеры, было бы неплохо, если бы это было на С++.
Спасибо!
Ответы
Ответ 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())