c語言生成10個(gè)1~100隨機(jī)數(shù) C語言產(chǎn)生不重復(fù)的隨機(jī)數(shù)?
C語言產(chǎn)生不重復(fù)的隨機(jī)數(shù)?用一個(gè)數(shù)字組合一個(gè)隨機(jī)數(shù),一個(gè)數(shù)組代表記錄的隨機(jī)數(shù);例如,random 0-8生成一個(gè)隨機(jī)的8位組,數(shù)組中的每個(gè)項(xiàng)都不重復(fù);例如:intray[8]intraryindex[
C語言產(chǎn)生不重復(fù)的隨機(jī)數(shù)?
用一個(gè)數(shù)字組合一個(gè)隨機(jī)數(shù),一個(gè)數(shù)組代表記錄的隨機(jī)數(shù);例如,random 0-8生成一個(gè)隨機(jī)的8位組,數(shù)組中的每個(gè)項(xiàng)都不重復(fù);例如:intray[8]intraryindex[8]={0,0,0,0,0,0}intk=0srand(100),而(K<8){intq=rand()%8 1If(arrayindex[Q-1]==1){continue}數(shù)組[k]=qarrayindex[Q-1]=1K}展開數(shù)據(jù)C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言C語言隨機(jī)輸出1~20個(gè)不重復(fù)的隨機(jī)數(shù),包括<stddio。H>;包括<time。H>和include<ime。H>;包括<time。H>;包括<;t-test-test-test-lead<.H.H<.H<時(shí)間。H>時(shí)間。時(shí)間(&G)。H>>;H>;H<;H&T時(shí)間。H>;H>;H&T時(shí)間。H>;H>;H>;H>;H>;H>;H>;H>;H>;H<;全部。H、 H&T;H;H>;all a
生成的隨機(jī)數(shù)被保存,然后當(dāng)獲得新的隨機(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)//無重復(fù)值,保存到列表。
{
list[i]=a
break]}]}
for(i=0 i< 10 i)//打印獲得的隨機(jī)數(shù)序列。
Printf(%D,”,list[i])
Printf(“n”)
返回0
}
代碼如下#include<stdio。H>int main(){int a[10],I srand((unsigned)time(0))for(I=0 I<10 I){a[I]=random() 1}return 0}
1 c語言生成隨機(jī)數(shù)函數(shù)。rand()的頭文件是stdlib。H
2。在[M,n]范圍內(nèi)生成隨機(jī)數(shù)的語句:rand()%(n-m1)M
3。生成不同隨機(jī)數(shù)范圍的方法:
保存獲得的隨機(jī)數(shù)。生成一個(gè)新的隨機(jī)數(shù)后,將其與獲得的隨機(jī)數(shù)進(jìn)行比較。如果存在,則丟棄它,否則保存它。
因此,我們可以得到不同隨機(jī)數(shù)的函數(shù),最小數(shù)為M,最大數(shù)為N,總數(shù)為K,可以寫成:
void get uurand(int*a,int M,int N,int K)//結(jié)果存在于a{int i,J,t for(i=0,i< K){t=Rand()%(N-m1)M for(J=0,J< i,J) if(a[J]==t)break if(J==I)//不要重復(fù)a[I]=t//記錄隨機(jī)數(shù)。}}