bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

c語言rand函數代碼,rand函數c語言

c語言rand()函數

rand和srand的用法

站在用戶的角度思考問題,與客戶深入溝通,找到商河網站設計與商河網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:做網站、成都網站設計、企業官網、英文網站、手機端網站、網站推廣、空間域名、雅安服務器托管、企業郵箱。業務覆蓋商河地區。

首先我們要對rand&srand有個總體的看法:srand初始化隨機種子,rand產生隨機數,下面將詳細說明。

rand(產生隨機數)

表頭文件: #includestdlib.h

定義函數 :int rand(void)

函數說明 :

因為rand的內部實現是用線性同余法做的,他不是真的隨機數,只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,rand()會返回一隨機數值,范圍在0至RAND_MAX 間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。rand ()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函數就是srand()。

返回值:

返回0至RAND_MAX之間的隨機整數值,RAND_MAX的范圍最少是在32767之間(int),即雙字節(16位數)。若用unsigned int 雙字節是65535,四字節是4294967295的整數范圍。

0~RAND_MAX每個數字被選中的機率是相同的。

范例:

/* 產生介于1 到10 間的隨機數值,此范例未設隨機數種子,完整的隨機數產生請參考

srand()*/

#includestdlib.h

main()

{

int i,j;

for(i=0;i10;i++)

{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf("%d ",j);

}

}

執行:

9 4 8 8 10 2 4 8 3 6

9 4 8 8 10 2 4 8 3 6 //再次執行仍然產生相同的隨機數

srand(設置隨機數種子)

表頭文件:#includestdlib.h

定義函數:void srand (unsigned int seed);

函數說明:

srand()用來設置rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通常可以利用geypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

范例

/* 產生介于1 到10 間的隨機數值,此范例與執行結果可與rand()參照*/

#includetime.h

#includestdlib.h

main()

{

int i,j;

srand((int)time(0));

for(i=0;i10;i++)

{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf(" %d ",j);

}

}

執行:與rand范例比較

5 8 8 8 10 2 10 8 9 9

2 9 7 4 10 3 2 10 8 7

又或:

用"int x = rand() % 100;"來生成 0 到 100 之間的隨機數這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))產生一個0到n之間的隨機數

int main(void)

{

int i;

time_t t;

srand((unsigned) time(t));

printf("Ten random numbers from 0 to 99\n\n");

for(i=0; i10; i++)

printf("%d\n", rand() % 100);

return 0;

}

除以上所說的之外,補充一點就是srand這個函數一定要放在循環外面或者是循環調用的外面,否則的話得到的是相同的數字。

MSDN中的例子。

// crt_rand.c

// This program seeds the random-number generator

// with the time, then displays 10 random integers.

//

#include stdlib.h

#include stdio.h

#include time.h

int main( void )

{

int i;

// Seed the random-number generator with current time so that

// the numbers will be different every time we run.

//

srand( (unsigned)time( NULL ) );

// Display 10 numbers.

for( i = 0; i 10;i++ )

printf( " %6d\n", rand() );

printf("\n");

// Usually, you will want to generate a number in a specific range,

// such as 0 to 100, like this:

{

int RANGE_MIN = 0;

int RANGE_MAX = 100;

for (i = 0; i 10; i++ )

{

int rand100 = (((double) rand() /

(double) RAND_MAX) * RANGE_MAX + RANGE_MIN);

printf( " %6d\n", rand100);

}

}

總結:

我們知道rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當于產生了隨機數,但這不是真正的隨機數,當計算機正常開機后,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了 srand()函數,它的原形是void srand( int a) 功能是

初始化隨機產生器既rand()函數的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數,我們是可以產生可以預見的隨機序列,

那我們如何才能產生不可預見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的,對了,你知道time() 函數的功能是返回從1970/01/01到現在的秒數的吧,可能這個起始時間不正確,你查一下對不對吧,C還提供了另一個更方便的函數, randomize()

原形是void randomize(),功能是用來始初rand() 的種子的初始值,而且該值是不確定的,它相當于srand((unsign)(time(NULL)) 不過應注意的是randomize()的功能要通過time來實現所以在調用它時頭文件要包含time.h罷了

怎么用C++編寫一個rand()函數,功能上是產生10個0-100之間的隨機整數

需要準備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,輸入C語言代碼:

for (int i = 0; i 10; i++)

printf("%d ", rand() % 100 +1);

3、編譯器運行test.cpp文件,此時成功通過rand產生了10個1-100內的整數。

擴展資料:

但是,要注意的是所謂的“偽隨機數”指的并不是假的隨機數。其實絕對的隨機數只是一種理想狀態的隨機數,計算機只能生成相對的隨機數即偽隨機數。計算機生 成的偽隨機數既是隨機的又是有規律的 —— 一部份遵守一定的規律。

一部份則不遵守任何規律。比如“世上沒有兩片形狀完全相同的樹葉”,這體現到了事物的特性 —— 差異性;但是每種樹的葉子都有近似的形狀。

這正是事物的共性 —— 規律性。從這個角度講,我們就可以接受這樣的事實了:計算機只能產生偽隨機數而不是絕對的隨機數。

系統在調用rand()之前都會自動調用srand(),如果用戶在rand()之前曾調用過srand()給參數seed指定了一個值。

那么 rand()就會將seed的值作為產生偽隨機數的初始值;而如果用戶在rand()前沒有調用過srand(),那么系統默認將1作為偽隨機數的初始 值。如果給了一個定值,那么每次rand()產生的隨機數序列都是一樣的。

所以為了避免上述情況的發生通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))來 產生種子。如果仍然覺得時間間隔太小。

可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某個合適的整數。 例如,srand((unsigned)time(NULL)*10)

C語言里面rand()是什麼函數,請說明下它的參數、返回值、功能以及頭文件,謝謝

函數名: rand

功 能: 隨機數發生器

用 法: void rand(void);

程序例:

#include stdlib.h

#include stdio.h

int main(void)

{

int i;

printf("Ten random numbers from 0 to 99\n\n");

for(i=0; i10; i++)

printf("%d\n", rand() % 100);

return 0;

}

這樣產生的隨機數為偽隨機數,如果要產生隨機數,可以在前面加一個隨機種子,srand(time(0)); time(0)返回的是系統的時間(從1970.1.1午夜算起)的總秒數,單位:秒

#include stdlib.h

#include stdio.h

#include time.h

int main(void)

{

srand(time(0));

int i;

printf("Ten random numbers from 0 to 99\n\n");

for(i=0; i10; i++)

printf("%d\n", rand() % 100);這樣就產生了0到99的隨機數(隨機數對100取余的結果)

return 0;

}

可以自己試試,沒加隨機種子時候,rand()%100每次產生的數都是一樣的,而加了srand(time(0))效果就不同了。

通過敲代碼實驗,并且參考以下網址

關于C語言中的隨機函數rand()的源代碼~~到底怎么求出隨機數的!!

return一句的功能只是把得數的絕對值控制在0~32767之間,關鍵是next = next * 1103515245 + 12345一句。next變量是靜態的,變化以后的值是不消失的,下一次還可用,所以每執行一次next = next * 1103515245 + 12345就獲得一個新值,這個新值被return取整除、取余除后控制在0~32767之間就形成了0~32767的隨機數。比如第一次,next=1*1103515245 + 12345=1103527590,經return中的對65536取整、對32768取余后就是16838;若再來一次,next已經是1103527590了,那么next = next * 1103515245 + 12345就為next = 1103527590 * 1103515245 + 12345=1217759518843121895;但這個數已經溢出了,實際上表示成了-1770082073,經return中取整取余后返回的就是-27009;可以算出來,再下一次是10113……不過,你這個函數并不能產生真正意義上的“隨機”數,因為作為基數的1103515245在每次開始時是不變的,所以只能得出同樣的序列,即每次執行都產生16838、-27009、10113……這樣一組無限多的數。所以實際的C隨機函數rand()的形參并不是void而是一個長整型變量,通常來調用實時時間函數獲取實時時間值來得到,因為時間是每時每刻都在變化的,所以充當"1103515245”角色的數就每調用一次的值都不同。這樣每次執行就都能得到不重復的序列。至于12345,我想隨便取個數都行!僅供參考……

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。

分享文章:c語言rand函數代碼,rand函數c語言
網站路徑:http://vcdvsql.cn/article48/hejohp.html

成都網站建設公司_創新互聯,為您提供營銷型網站建設自適應網站靜態網站做網站品牌網站建設網站收錄

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設