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