乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      [049]?仿骰子程序-隨機(jī)數(shù)的產(chǎn)生 -- 一步一腳印 -- 編程愛好者博客

       Synix 2010-03-19

      出自:《C程序設(shè)計(jì)》(夏寶嵐) P76


      6.8 編寫一個(gè)仿骰子程序,將六面體骰子擲6000次,統(tǒng)計(jì)出各面出現(xiàn)的次數(shù)。每次投擲骰子出現(xiàn)哪一面,由隨機(jī)數(shù)發(fā)生器提供的函數(shù)經(jīng)過處理而確定。

      #include <stdio.h>
      #include <stdlib.h> /* rand()函數(shù)用 */
      int main()
      {
          int face;
          int f[6] = {0};
          int i;

       

          for(i = 1; i <= 6000; i++)
              f[rand() % 6]++ ;       /* 數(shù)組元素下標(biāo)為0到5 */

          printf("Face  Frequency\n");
          for(face = 0; face < 6; face++)
              printf("%2d %10d\n", face + 1, f[face]);
          return 0;
      }

      運(yùn)行結(jié)果(僅供參考):
      ===============================
      Face  Frequency
       1       1003
       2       1017
       3        983
       4        994
       5       1004
       6        999
      ===============================

      其中rand()為庫函數(shù),函數(shù)原型在stdlib.h中定義,其功能是產(chǎn)生0到32767之間的整數(shù),而且每個(gè)整數(shù)的出現(xiàn)概率是相等的。由于模擬投擲骰子的程序只需要1到6之間的隨機(jī)整數(shù),故用rand()%6作為數(shù)組下標(biāo),使數(shù)組元素下標(biāo)為0到5,分別對(duì)應(yīng)1到6各個(gè)面。

      想既然是隨機(jī)產(chǎn)生的數(shù),那么每次Run時(shí)的結(jié)果應(yīng)該是不一樣,但事實(shí)上并非如此,我在VC++6.0中得到的上述結(jié)果,但每次都是這些值,根本沒變。又試著在WIN-TC及TC運(yùn)行,雖然數(shù)據(jù)各不相同,但在同一編譯器下的結(jié)果卻總是一樣的。
          查了一下(查看出處),原來問題在這個(gè)rand()函數(shù)上。函數(shù)原型 int rand(void) 返回一個(gè)隨機(jī)數(shù)值,范圍在0到RAND_MAX之間,RAND_MAX定義在stdlib.h??戳艘幌耉C++6.0里include目錄下的stdlib.h頭文件,里面有個(gè)"#define RAND_MAX 0x7fff"是十六進(jìn)制的,也就是十進(jìn)制的32767。也有稱之為偽隨機(jī)。
          在調(diào)用這個(gè)函數(shù)前必須先利用srand()設(shè)置好隨機(jī)數(shù)種子。如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1。是一個(gè)不變的值,這樣每次運(yùn)行產(chǎn)生的隨機(jī)數(shù)就是一樣的。那如何才能讓其為真正的"隨機(jī)"呢?就要用srand()函數(shù)設(shè)置rand()函數(shù)產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子,其原型為 void srand (unsigned int seed); 其中seed必須為整數(shù),一般可以用geypid()或time(0)的返回值做為seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機(jī)數(shù)值每次就會(huì)一樣。改寫如下:

      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>   /* time()函數(shù)用 */
      int main()
      {
          int face;
          int f[6] = {0};
          int i;
         
          srand(time(0));  /* 設(shè)置種子 */

          for(i = 1; i <= 6000; i++)
              f[rand() % 6]++; 

          printf("Face  Frequency\n");
          for(face = 0; face < 6; face++)
              printf("%2d %10d\n", face + 1, f[face]);
          return 0;
      }

      運(yùn)行結(jié)果(隨機(jī)):
      ==============================
      Face  Frequency
       1       1062
       2        940
       3       1024
       4        974
       5       1029
       6        971
      ==============================

      再運(yùn)行(隨機(jī)):
      ==============================
      Face  Frequency
       1        978
       2        990
       3        991
       4       1015
       5       1047
       6        979
      ==============================

      經(jīng)過如上改動(dòng)再測試,每次產(chǎn)生的隨機(jī)數(shù)就不一樣了。上面是隨機(jī)選的兩組結(jié)果。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多