真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言rand函數(shù)返回 c語言中rand函數(shù)的使用方法

c語言rand()函數(shù)

rand和srand的用法

創(chuàng)新互聯(lián)專注于化隆企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城建設(shè)?;【W(wǎng)站建設(shè)公司,為化隆等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

首先我們要對(duì)rand&srand有個(gè)總體的看法:srand初始化隨機(jī)種子,rand產(chǎn)生隨機(jī)數(shù),下面將詳細(xì)說明。

rand(產(chǎn)生隨機(jī)數(shù))

表頭文件: #includestdlib.h

定義函數(shù) :int rand(void)

函數(shù)說明 :

因?yàn)閞and的內(nèi)部實(shí)現(xiàn)是用線性同余法做的,他不是真的隨機(jī)數(shù),只不過是因?yàn)槠渲芷谔貏e長(zhǎng),所以有一定的范圍里可看成是隨機(jī)的,rand()會(huì)返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1。rand ()產(chǎn)生的是假隨機(jī)數(shù)字,每次執(zhí)行時(shí)是相同的。若要不同,以不同的值來初始化它.初始化的函數(shù)就是srand()。

返回值:

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

0~RAND_MAX每個(gè)數(shù)字被選中的機(jī)率是相同的。

范例:

/* 產(chǎn)生介于1 到10 間的隨機(jī)數(shù)值,此范例未設(shè)隨機(jī)數(shù)種子,完整的隨機(jī)數(shù)產(chǎn)生請(qǐng)參考

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);

}

}

執(zhí)行:

9 4 8 8 10 2 4 8 3 6

9 4 8 8 10 2 4 8 3 6 //再次執(zhí)行仍然產(chǎn)生相同的隨機(jī)數(shù)

srand(設(shè)置隨機(jī)數(shù)種子)

表頭文件:#includestdlib.h

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

函數(shù)說明:

srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed必須是個(gè)整數(shù),通??梢岳胓eypid()或time(0)的返回值來當(dāng)做seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會(huì)一樣。

范例

/* 產(chǎn)生介于1 到10 間的隨機(jī)數(shù)值,此范例與執(zhí)行結(jié)果可與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);

}

}

執(zhí)行:與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ī)數(shù)這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))產(chǎn)生一個(gè)0到n之間的隨機(jī)數(shù)

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;

}

除以上所說的之外,補(bǔ)充一點(diǎn)就是srand這個(gè)函數(shù)一定要放在循環(huán)外面或者是循環(huán)調(diào)用的外面,否則的話得到的是相同的數(shù)字。

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);

}

}

總結(jié):

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

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

那我們?nèi)绾尾拍墚a(chǎn)生不可預(yù)見的隨機(jī)序列呢?我們可能常常需要這樣的隨機(jī)序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因?yàn)槊恳淮芜\(yùn)行程序的時(shí)間是不同的,對(duì)了,你知道time() 函數(shù)的功能是返回從1970/01/01到現(xiàn)在的秒數(shù)的吧,可能這個(gè)起始時(shí)間不正確,你查一下對(duì)不對(duì)吧,C還提供了另一個(gè)更方便的函數(shù), randomize()

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

c語言的Rand函數(shù)問題?

rand(產(chǎn)生隨機(jī)數(shù))

相關(guān)函數(shù)

srand

表頭文件

#includestdlib.h

定義函數(shù)

int rand(void)

函數(shù)說明

rand()會(huì)返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1。關(guān)于隨機(jī)數(shù)種子請(qǐng)參考srand()。

返回值

返回0至RAND_MAX之間的隨機(jī)數(shù)值,RAND_MAX定義在stdlib.h,其值為2147483647。

范例

/* 產(chǎn)生介于1 到10 間的隨機(jī)數(shù)值,此范例未設(shè)隨機(jī)數(shù)種子,完整的隨機(jī)數(shù)產(chǎn)生請(qǐng)參考

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);

}

}

執(zhí)行

9 4 8 8 10 2 4 8 3 6

9 4 8 8 10 2 4 8 3 6

srand(設(shè)置隨機(jī)數(shù)種子)

相關(guān)函數(shù)

rand

表頭文件

#includestdlib.h

定義函數(shù)

void srand (unsigned int seed);

函數(shù)說明

srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed必須是個(gè)整數(shù),通常可以利用geypid()或time(0)的返回值來當(dāng)做seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會(huì)一樣。

返回值

范例

/* 產(chǎn)生介于1 到10 間的隨機(jī)數(shù)值,此范例與執(zhí)行結(jié)果可與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);

}

}

執(zhí)行

5 8 8 8 10 2 10 8 9 9

2 9 7 4 10 3 2 10 8 7

C語言中的rand()函數(shù)怎么用

rand()

rand()函數(shù)用來產(chǎn)生隨機(jī)數(shù),但是,rand()的內(nèi)部實(shí)現(xiàn)是用線性同余法實(shí)現(xiàn)的,是偽隨機(jī)數(shù),由于周期較長(zhǎng),因此在一定范圍內(nèi)可以看成是隨機(jī)的。

rand()會(huì)返回一個(gè)范圍在0到RAND_MAX(至少是32767)之間的偽隨機(jī)數(shù)(整數(shù))。

在調(diào)用rand()函數(shù)之前,可以使用srand()函數(shù)設(shè)置隨機(jī)數(shù)種子,如果沒有設(shè)置隨機(jī)數(shù)種子,rand()函數(shù)在調(diào)用時(shí),自動(dòng)設(shè)計(jì)隨機(jī)數(shù)種子為1。隨機(jī)種子相同,每次產(chǎn)生的隨機(jī)數(shù)也會(huì)相同。

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

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

使用rand()函數(shù)產(chǎn)生1-100以內(nèi)的隨機(jī)整數(shù):int number1 = rand() % 100+1。

srand()

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

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

srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed是整數(shù),通??梢岳胻ime(0)或getpid(0)的返回值作為seed。

使用rand()和srand()產(chǎn)生1-100以內(nèi)的隨機(jī)整數(shù):

srand(time(0));

int number1 = rand() % 100+1。

關(guān)于C語言中rand函數(shù)解答

a的類型不對(duì)

rand 的返回值是int型

你賦值給double了

把a(bǔ)改成int

然后再試試

如果還是相同 那么打印一下隨機(jī)到的a值。

另外 srand在程序運(yùn)行開始的時(shí)候調(diào)用一次就好,不要每次函數(shù)內(nèi)都調(diào)用一次。

這樣如果一秒內(nèi)調(diào)用多次 就會(huì)出現(xiàn)你說的情況。


網(wǎng)頁標(biāo)題:c語言rand函數(shù)返回 c語言中rand函數(shù)的使用方法
當(dāng)前URL:http://weahome.cn/article/ddojdpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部