// 正确姿势示范
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int get();
int main()
{
srand(time(NULL));
for (int i = 0; i < 10; i++)
{
int temp = get();
printf("%d\n", temp);
}
return 0;
}
int get()
{
return rand() % 16;
}
错误写法1: 在每次获取随机数时候都进行播种
int get()
{
srand(time(NULL));
return rand() % 16;
}
这样写的话我们会发现,在获取随机数的时候,随机数都是一样的。
这是因为程序在一秒内获取了多次随机数,并且每次获取的都是时间种子产生的第一个随机数
错误写法2:获取随机数前不设置时间种子,即通篇没有 srand(time(NULL))
这样写的话我们会发现,每次运行程序,我们获取的随机数都是一样的。
这是因为如果我们不人为的设定时间种子,它会使用开机时候自带的种子,而后续每次获取随机数都是用开机自带的种子,种子一样,获取的随机数自然也就是一样的。
本文探讨了C语言中随机数生成的正确方法与常见误区,包括如何避免重复播种及未播种导致的随机数序列固定问题,通过实例对比正确与错误的随机数生成方式。

8949

被折叠的 条评论
为什么被折叠?



