我试图了解 SI 中伪随机数的生成。
我是否正确理解该函数srand (seed)
设置了生成一组伪随机整数的起点,而函数本身又依次生成它,rand ()
并且任何数字都用作seed
重置生成器的参数?
当我看到参数的值相同时,问题就形成了,seed
从函数中获得的数字rand ()
将是相等的。
前三个数字始终相等的示例:
int main(void) {
srand(4);
printf("%d\n", 80 + rand()%21);
srand(4);
printf("%d\n", 80 + rand()%21);
srand(4);
printf("%d\n", 80 + rand()%21);
srand(1);
printf("%d\n", 80 + rand()%21);
srand(0);
printf("%d\n", 80 + rand()%21);
}
是的,这是正确的。
同时,语言规范保证在第一次调用之前,
srand
函数的rand
行为与之后一样srand(1)
。也就是说,在这种情况下数字也将相等。