不重復(fù)隨機(jī)數(shù)生成器 C語(yǔ)言:如何產(chǎn)生不重復(fù)的隨機(jī)數(shù)字?
C語(yǔ)言:如何產(chǎn)生不重復(fù)的隨機(jī)數(shù)字?保存生成的隨機(jī)數(shù),然后在獲得新的隨機(jī)數(shù)時(shí),將其與以前保存的值進(jìn)行比較。如果它已經(jīng)出現(xiàn),則丟棄并再次獲得,直到獲得不同的隨機(jī)值。以獲取10個(gè)0到100之間的非重復(fù)隨機(jī)數(shù)
C語(yǔ)言:如何產(chǎn)生不重復(fù)的隨機(jī)數(shù)字?
保存生成的隨機(jī)數(shù),然后在獲得新的隨機(jī)數(shù)時(shí),將其與以前保存的值進(jìn)行比較。如果它已經(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ù)項(xiàng)。
If(J==I)//無(wú)重復(fù)值,保存到列表。
{
list[i]=a
break]}]}
for(i=0 i< 10 i)//打印獲得的隨機(jī)數(shù)序列。
printf(“%d,”,list[i])
printf(“n”)
返回0
}