當前位置:首頁 » 編程語言 » C語言隨機數生成的數字唯一
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言隨機數生成的數字唯一

發布時間: 2022-08-22 21:59:54

『壹』 c語言如何產生不重復的隨機數

用一個數組裝隨機數,一個數組表示已經記錄過的隨機數;

比如說隨機0-8,生成一個隨機8位數組且數組內各項不重復;

例:

intarray[8];

intarrayIndex[8]={0,0,0,0,0,0,0,0};

intk=0;

srand(100);

while(k<8){

intq=rand()%8+1;

if(arrayIndex[q-1]==1){

continue;

}

array[k]=q;

arrayIndex[q-1]=1;

k++;

}

(1)C語言隨機數生成的數字唯一擴展閱讀

C語言隨機輸出1~20不重復的隨機數

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

voidmain()

{

inta[20];

inti,j;

srand((int)time(0));

a[0]=rand()%20+1;

for(i=1;i<20;i++)

{

a[i]=rand()%20+1;

for(j=0;j<i;j++)

{

if(a[i]==a[j])

{

i--;

}

}

}

for(i=0;i<20;i++)

{

printf("%3dn",a[i]);

}

}

『貳』 C語言產生唯一隨機數問題,代碼解釋。while(a[m=rand()%100]);

從第一次開始,while(a[50]) a[50]=0時,就是因為它為0了,循環不成立才往下執行,不然a[50]=1就一直在while(a[m=rand()%100]);這里循環了,注意,這里是有分號的,while在這里只作用於這個分號之前,如果條件成立,就一直死循環,不會往下了。

『叄』 在c語言里,為什麼rand()每次生成的數都一樣

rand((unsigned)time(NULL))
你生成的數字一樣,是因為沒有根據它的時間來變化,上面的代碼就可以了.

『肆』 C語言產生隨機數字,結果輸出值都一樣

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//#include<crtdefs.h>
intmain(){
inti;
intnum;
srand((unsignedint)time(NULL));//改成這樣就好了:先用時間初始化隨機種子
for(i=0;i<10;i++){
//time_tt;
num=rand()%100; //生成隨機數
printf("%d ",num);
num>50?printf("你贏了 "):printf("你輸了 "); //0為假,非0為真
}
getchar();
}

『伍』 為什麼我用C語言編寫的一個隨機數生成程序生成的數總是一樣的

你需要設置隨機數種子才能生成不一樣的隨機數
你可以參考下面這個樣例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i,j;
srand((int)time(0));/*設置隨機數種子*/
for(i=0;i<10;i++)
{
j=rand()%100;
printf("%d\n",j);
}
return 0;
}

『陸』 C語言生成隨機數的函數,為什麼循環後隨機數都一樣

srand()函數是初始化隨機數產生器,它產生隨機數種子,說白了就是初始化隨機數。

srand((unsigned)time(0));取的是系統時間,也就是距離1970.1.1午夜有多少秒。而for循環每循環一次時間遠遠小於1秒,這就導致了srand((unsigned)time(0))產生的種子並沒有改變。 那麼,相同的隨機數種子所產生的隨機數肯定是一樣的了。


(6)C語言隨機數生成的數字唯一擴展閱讀:

C語言產生隨機數的方法:

1,在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。

2,C語言中的隨機函數random,可是random函數並不是ANSI C標准,所以說,random函數不能在gcc,vc等編譯器下編譯通過。

3,rand()會返回一隨機數值,范圍在0至RAND_MAX 間。返回0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h,(其值至少為32767)我運算的結果是一個不定的數,要看你定義的變數類型,int整形的話就是32767。

4,在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。一般用for語句來設置種子的個數。

『柒』 C語言:為什麼每次產生的rand隨機數全都一樣例如第一個是9,後面全都是9

/*

Enter the number of sets: enter q to stop.

5 9

How many sides and how many dice:3

Here are 5 sets of 3 9-sided throws.

25 18 14 13 17

How many sets? Enter q to stop.

q

Press any key to continue

*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intdiceroll(intnum,intside);//返回骰子產生的數字的總和

intmain(void){
intsets,side,dice;//sets為回合數,side面,dice:骰子個數
inti;//變數初始化
srand((unsigned)time(NULL));//應在main()初始化隨機數種子
printf("Enterthenumberofsets:enterqtostop. ");//set組
while(scanf("%d",&sets)==1&&sets>0){
printf("Howmanysidesandhowmanydice:");
if(scanf("%d%d",&side,&dice)==2){
printf("Hereare%dsetsof%d%d-sidedthrows. ",sets,dice,side);
for(i=0;i<sets;i++)//0-sets個回合
printf("%d",diceroll(side,dice));//列印出返回值
printf(" ");
printf("Howmanysets?Enterqtostop. ");
}
elseprintf("inputside,anddice: ");
}
return0;
}

intdiceroll(intside,intdice){
inti,sum;
for(i=0,sum=0;i<dice;i++)
sum+=rand()%side+1;//產生3個骰子搖出的總和sum
returnsum;//返回3個骰子搖出的總數sum
}

『捌』 c語言中怎樣產生位數一定的隨機數

c語言的獲取隨機數的函數為rand(),
可以獲得一個非負整數的隨機數。要調用rand需要引用頭文件stdlib.h。
要讓隨機數限定在一個范圍,可以採用模除加加法的方式。
要產生隨機數r,
其范圍為
m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對於任意數,
0<=rand()%(n-m+1)<=n-m
於是
0+m<=rand()%(n-m+1)+m<=n-m+m

m<=rand()%(n-m+1)+m<=n

『玖』 C語言隨機生成數字

for(int
i=0;i<=a長度;i++)
{
a[i]=random(100);/*得到0到100之間的隨機數,具體用法可以查一下隨機函數。相應的隨機函數還有randomize,srand,rand*/
}