c語言隨機數(shù)生成算法 C語言:如何產(chǎn)生不重復(fù)的隨機數(shù)字?
C語言:如何產(chǎn)生不重復(fù)的隨機數(shù)字?將已經(jīng)產(chǎn)生的隨機數(shù)保存下來,然后在獲取到新的隨機數(shù)時,與之前保存下來的值進行對比,如果已經(jīng)出現(xiàn)過則拋棄,并再次獲取,直到獲取到不同的隨機值為止。以獲取10個0~100
C語言:如何產(chǎn)生不重復(fù)的隨機數(shù)字?
將已經(jīng)產(chǎn)生的隨機數(shù)保存下來,然后在獲取到新的隨機數(shù)時,與之前保存下來的值進行對比,如果已經(jīng)出現(xiàn)過則拋棄,并再次獲取,直到獲取到不同的隨機值為止。
以獲取10個0~100之間的不重復(fù)隨機數(shù)為例,代碼如下:
#include
#include
#include
int main()
{
int list[10], i,j, a
srand(time(null))//設(shè)置隨機數(shù)種子。
for(i = 0 i < 10 i )
{
while(1)
{
a = rand()0 //獲取一個0~100之間的隨機數(shù)。
for(j = 0 j < i j )
if(list[j] == a) break//檢查重復(fù)。
if(j == i)//沒有重復(fù)值,保存到list中。
{
list[i] = a
break
}
}
}
for(i = 0 i < 10 i )//打印獲取到的隨機數(shù)序列。
printf("%d,",list[i])
printf("n")
return 0
}