c语言随机数生成算法 C语言:如何产生不重复的随机数字?
C语言:如何产生不重复的随机数字?将已经产生的随机数保存下来,然后在获取到新的随机数时,与之前保存下来的值进行对比,如果已经出现过则抛弃,并再次获取,直到获取到不同的随机值为止。以获取10个0~100
C语言:如何产生不重复的随机数字?
将已经产生的随机数保存下来,然后在获取到新的随机数时,与之前保存下来的值进行对比,如果已经出现过则抛弃,并再次获取,直到获取到不同的随机值为止。
以获取10个0~100之间的不重复随机数为例,代码如下:
#include
#include
#include
int main()
{
int list[10], i,j, a
srand(time(null))//设置随机数种子。
for(i = 0 i < 10 i )
{
while(1)
{
a = rand()0 //获取一个0~100之间的随机数。
for(j = 0 j < i j )
if(list[j] == a) break//检查重复。
if(j == i)//没有重复值,保存到list中。
{
list[i] = a
break
}
}
}
for(i = 0 i < 10 i )//打印获取到的随机数序列。
printf("%d,",list[i])
printf("n")
return 0
}