1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      c語言rand函數(shù)代碼,rand函數(shù)c語言

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

      rand和srand的用法

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

      首先我們要對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長,所以有一定的范圍里可看成是隨機(jī)的,rand()會返回一隨機(jī)數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會自動設(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)生請參考

      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ù),通常可以利用geypid()或time(0)的返回值來當(dāng)做seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會一樣。

      范例

      /* 產(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í)間是不同的,對了,你知道time() 函數(shù)的功能是返回從1970/01/01到現(xiàn)在的秒數(shù)的吧,可能這個(gè)起始時(shí)間不正確,你查一下對不對吧,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++編寫一個(gè)rand()函數(shù),功能上是產(chǎn)生10個(gè)0-100之間的隨機(jī)整數(shù)

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

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

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

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

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

      3、編譯器運(yùn)行test.cpp文件,此時(shí)成功通過rand產(chǎn)生了10個(gè)1-100內(nèi)的整數(shù)。

      擴(kuò)展資料:

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

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

      這正是事物的共性 —— 規(guī)律性。從這個(gè)角度講,我們就可以接受這樣的事實(shí)了:計(jì)算機(jī)只能產(chǎn)生偽隨機(jī)數(shù)而不是絕對的隨機(jī)數(shù)。

      系統(tǒng)在調(diào)用rand()之前都會自動調(diào)用srand(),如果用戶在rand()之前曾調(diào)用過srand()給參數(shù)seed指定了一個(gè)值。

      那么 rand()就會將seed的值作為產(chǎn)生偽隨機(jī)數(shù)的初始值;而如果用戶在rand()前沒有調(diào)用過srand(),那么系統(tǒng)默認(rèn)將1作為偽隨機(jī)數(shù)的初始 值。如果給了一個(gè)定值,那么每次rand()產(chǎn)生的隨機(jī)數(shù)序列都是一樣的。

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

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

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

      函數(shù)名: rand

      功 能: 隨機(jī)數(shù)發(fā)生器

      用 法: 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;

      }

      這樣產(chǎn)生的隨機(jī)數(shù)為偽隨機(jī)數(shù),如果要產(chǎn)生隨機(jī)數(shù),可以在前面加一個(gè)隨機(jī)種子,srand(time(0)); time(0)返回的是系統(tǒng)的時(shí)間(從1970.1.1午夜算起)的總秒數(shù),單位:秒

      #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);這樣就產(chǎn)生了0到99的隨機(jī)數(shù)(隨機(jī)數(shù)對100取余的結(jié)果)

      return 0;

      }

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

      通過敲代碼實(shí)驗(yàn),并且參考以下網(wǎng)址

      關(guān)于C語言中的隨機(jī)函數(shù)rand()的源代碼~~到底怎么求出隨機(jī)數(shù)的!!

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

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

      rand()

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

      rand()會返回一個(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í),自動設(shè)計(jì)隨機(jī)數(shù)種子為1。隨機(jī)種子相同,每次產(chǎn)生的隨機(jī)數(shù)也會相同。

      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ù),通常可以利用time(0)或getpid(0)的返回值作為seed。

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

      srand(time(0));

      int number1 = rand() % 100+1。


      本文題目:c語言rand函數(shù)代碼,rand函數(shù)c語言
      分享路徑:http://www.ef60e0e.cn/article/hejohp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        岐山县| 宁明县| 乾安县| 锡林郭勒盟| 南开区| 来凤县| 英山县| 阿合奇县| 城口县| 林西县| 隆安县| 巍山| 抚宁县| 龙山县| 昌都县| 光泽县| 敦煌市| 保靖县| 浪卡子县| 郸城县| 大理市| 建德市| 宁安市| 清徐县| 西昌市| 射洪县| 大庆市| 温州市| 渭南市| 洛宁县| 竹北市| 东宁县| 光泽县| 雅江县| 呈贡县| 微山县| 龙岩市| 邛崃市| 临泽县| 尉犁县| 吉安市|