當前位置:首頁 » 編程語言 » c語言中能隨機產生數值的函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中能隨機產生數值的函數

發布時間: 2022-05-04 19:56:11

1. 如何在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

2. C語言中有沒有產生隨機數的函數

貼個以前寫下來的例子給你.
#include <stdio.h>
#include <time.h> //include時間頭文件,有這個才可以調用下面的time(NULL)函數
void main()
{
int x,y;
srand( (unsigned)time( NULL ) );//用即時的系統時間來做隨機數種子.生成隨機數
//關於隨機數的說明,有點復雜
//建議看一下面這個網路頁面:
//
// randomize();//上面這句與這一句作用一樣,隨便選一句都行.
x=rand()%20; //隨機生成x,格式rand()%20即要求產生20以內的
//如果不加後面的%20,直接x=rand(),則隨機生成int取值范圍內的正整數.
y=rand()%30; //隨機生成y,30以內的正整數
printf("%d,%d",x,y);
}

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

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

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


(3)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語句來設置種子的個數。

4. C語言中產生隨機數的函數是什麼

rand函數也是調用dos的時鍾,進行的偽隨機函數.
你也可以使用時鍾來模擬隨機函數.
可以試用gettime這個函數:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(&t1);
int y1=t1.ti_hund;//取1/100s作為基數
gettime(&t2);
int y2=t2.ti_hund;//取1/100s作為基數
gettime(&t3);
int y3=t3.ti_hund;//取1/100s作為基數
return y1*y2*y3;//產生的隨機數0~99*99*99
}

5. C語言如何編程產生隨機數

1、首先打開Visual
stdio
2019,依次點擊文件,新建,項目新建以一個空白的項目:
2、新建新項目以後,右鍵點擊左邊的源文件,選擇添加,點擊添加項:
3、選擇cpp,並將下方的擴展名改為.c,然後點擊確定:
4、接下來就可以用編譯器編譯,使用rand()函數產生C語言的隨機數,需要加入stdlib.h和time.h在表頭,rand()函數需要給srand()函數提供一個參數,不然系統會給定一個默認的參數,如果參數為一任意的常量的話,得到的也是偽隨機數:
4、按ctrl+F5就可以運行程序了,在彈出的窗口中就會看到得到的所有隨機數了:

6. C語言怎樣產生一定范圍的隨機數

在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。

為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。

C語言產生一定范圍的隨機數的源代碼如下:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i;

for(i=0; i<10; i++) //隨機產生10個數。

{

printf("%d ", rand());

}

return 0;

}

(6)c語言中能隨機產生數值的函數擴展閱讀

1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。

2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。

7. C語言中取隨機數的函數

1. 基本函數

在C語言中取隨機數所需要的函數是:

int rand(void); void srand (unsigned int n);

rand()函數和srand()函數被聲明在頭文件stdlib.h中,所以要使用這兩個函數必須包含該頭文件:

#include <stdlib.h>

2. 使用方法

rand()函數返回0到RAND_MAX之間的偽隨機數(pseudorandom)。RAND_MAX常量被定義在stdlib.h頭文件中。其值等於32767,或者更大。

srand()函數使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後調用rand()時,就會產生相同的隨機數序列。因此,我們可以把時間作為srand()函數的種子,就可以避免重復的發生。如果,調用rand()之前沒有先調用srand(),就和事先調用srand(1)所產生的結果一樣。

舉個例子,假設我們要取得0~10之間的隨機整數(不含10本身):

/* 例1:不指定種子的值 */
for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次運行都將輸出:1 7 4 0 9 4 8 8 2 4
/* 例2:指定種子的值為1 */
srand(1); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次運行都將輸出:1 7 4 0 9 4 8 8 2 4
例2的輸出結果與例1是完全一樣的。
/* 例3:指定種子的值為8 */ srand(8); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次運行都將輸出:4 0 1 3 5 3 7 7 1 5
該程序取得的隨機值也是在[0,10)之間,與srand(1)所取得的值不同,但是每次運行程序的結果都相同。
/* 例4:指定種子值為現在的時間 */ srand((unsigned)time(NULL)); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
該程序每次運行結果都不一樣,因為每次啟動程序的時間都不同。另外需要注意的是,使用time()函數前必須包含頭文件time.h。

3. 注意事項
求一定范圍內的隨機數。
如要取[0,10)之間的隨機整數,需將rand()的返回值與10求模。
randnumber = rand() % 10;
那麼,如果取的值不是從0開始呢?你只需要記住一個通用的公式。
要取[a,b)之間的隨機整數(包括a,但不包括b),使用:
(rand() % (b - a)) + a
偽隨機浮點數。
要取得0~1之間的浮點數,可以用:
rand() / (double)(RAND_MAX)
如果想取更大范圍的隨機浮點數,比如0~100,可以採用如下方法:
rand() /((double)(RAND_MAX)/100) 其他情況,以此類推,這里不作詳細說明。

8. C語言中的rand()函數怎麼用

rand()

rand()函數用來產生隨機數,但是,rand()的內部實現是用線性同餘法實現的,是偽隨機數,由於周期較長,因此在一定范圍內可以看成是隨機的。

rand()會返回一個范圍在0到RAND_MAX(至少是32767)之間的偽隨機數(整數)。

在調用rand()函數之前,可以使用srand()函數設置隨機數種子,如果沒有設置隨機數種子,rand()函數在調用時,自動設計隨機數種子為1。隨機種子相同,每次產生的隨機數也會相同。

rand()函數需要的頭文件是:<stdlib.h>

rand()函數原型:int rand(void);

使用rand()函數產生1-100以內的隨機整數:int number1 = rand() % 100+1。

srand()

srand()函數需要的頭文件仍然是:<stdlib.h>

srand()函數原型:void srand (usigned int seed);

srand()用來設置rand()產生隨機數時的隨機數種子。參數seed是整數,通常可以利用time(0)或getpid(0)的返回值作為seed。

使用rand()和srand()產生1-100以內的隨機整數:

srand(time(0));

int number1 = rand() % 100+1。

9. c語言隨機數函數是什麼

C語言隨機函數主要用於實現一組隨機數的生成。

代碼示例如下:

#include<stdio.h>

#include<stdlib.h>

int main ()

{

int a;

a=rand()%4;

printf("%d ",a);

return 0;

}

C預先生成一組隨機數,每次調用隨機函數時從指針所指向的位置開始取值,因此使用rand()重復運行程序產生的隨機數都是相同的,可以通過srand()函數來改變指針位置。

(9)c語言中能隨機產生數值的函數擴展閱讀:

C語言隨機函數指針位置

void srand( unsigned int seed )

改變隨機數表的指針位置(用seed變數控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產生的seed值都不同。

基於毫秒級隨機數產生方法:

#include<windows.h>

種子設為:srand(unsigned int seed);

srand(GetTickCount());

參考資料:網路-C語言隨機函數