亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學(xué)習(xí)啦 > 學(xué)習(xí)英語 > 專業(yè)英語 > 計算機英語 > c語言rand的用法

      c語言rand的用法

      時間: 長思709 分享

      c語言rand的用法

        C語言中rand用于產(chǎn)生隨機數(shù),與他相關(guān)的是srand ,下面將詳細說明c語言rand的用法。
        rand(產(chǎn)生隨機數(shù))
        表頭文件: #include
        定義函數(shù) :int rand(void)
        函數(shù)說明 :
        因為rand的內(nèi)部實現(xiàn)是用線性同余法做的,他不是真的隨機數(shù),只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的,rand()會返回一隨機數(shù)值,范圍在0至RAND_MAX 間。在調(diào)用此函數(shù)產(chǎn)生隨機數(shù)前,必須先利用srand()設(shè)好隨機數(shù)種子,如果未設(shè)隨機數(shù)種子,rand()在調(diào)用時會自動設(shè)隨機數(shù)種子為1。rand ()產(chǎn)生的是假隨機數(shù)字,每次執(zhí)行時是相同的。若要不同,以不同的值來初始化它.初始化的函數(shù)就是srand()。
        返回值:
        返回0至RAND_MAX之間的隨機整數(shù)值,RAND_MAX的范圍最少是在32767之間(int),即雙字節(jié)(16位數(shù))。若用unsigned int 雙字節(jié)是65535,四字節(jié)是4294967295的整數(shù)范圍。
        0~RAND_MAX每個數(shù)字被選中的機率是相同的。
        rand的用法范例1:
        /* 產(chǎn)生介于1 到10 間的隨機數(shù)值,此范例未設(shè)隨機數(shù)種子,完整的隨機數(shù)產(chǎn)生請參考
        srand()*/
        #include
        main()
        {
        int i,j;
        for(i=0;i<10;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)生相同的隨機數(shù)
        srand(設(shè)置隨機數(shù)種子)
        表頭文件:#include
        定義函數(shù):void srand (unsigned int seed);
        函數(shù)說明:
        srand()用來設(shè)置rand()產(chǎn)生隨機數(shù)時的隨機數(shù)種子。參數(shù)seed必須是個整數(shù),通??梢岳胓eypid()或time(0)的返回值來當做seed。如果每次seed都設(shè)相同值,rand()所產(chǎn)生的隨機數(shù)值每次就會一樣。
        rand的用法范例2:
        /* 產(chǎn)生介于1 到10 間的隨機數(shù)值,此范例與執(zhí)行結(jié)果可與rand()參照*/
        #include
        #include
        main()
        {
        int i,j;
        srand((int)time(0));
        for(i=0;i<10;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 之間的隨機數(shù)這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))產(chǎn)生一個0到n之間的隨機數(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; i<10; i++)
        printf("%d/n", rand() % 100);
        return 0;
        }
        除以上所說的之外,補充一點就是srand這個函數(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
        #include
        #include
        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的用法總結(jié):
        我們知道rand()函數(shù)可以用來產(chǎn)生隨機數(shù),但是這不是真真意義上的隨機數(shù),是一個偽隨機數(shù),是根據(jù)一個數(shù),我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數(shù),當這系列數(shù)很大的時候,就符合正態(tài)公布,從而相當于產(chǎn)生了隨機數(shù),但這不是真正的隨機數(shù),當計算機正常開機后,這個種子的值是定了的,除非你破壞了系統(tǒng),為了改變這個種子的值,C提供了 srand()函數(shù),它的原形是void srand( int a) 功能是
        初始化隨機產(chǎn)生器既rand()函數(shù)的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數(shù),我們是可以產(chǎn)生可以預(yù)見的隨機序列,
        那我們?nèi)绾尾拍墚a(chǎn)生不可預(yù)見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的,對了,你知道time() 函數(shù)的功能是返回從1970/01/01到現(xiàn)在的秒數(shù)的吧,可能這個起始時間不正確,你查一下對不對吧,C還提供了另一個更方便的函數(shù), randomize()
        原形是void randomize(),功能是用來始初rand() 的種子的初始值,而且該值是不確定的,它相當于srand((unsign)(time(NULL)) 不過應(yīng)注意的是randomize()的功能要通過time來實現(xiàn)所以在調(diào)用它時頭文件要包含time.h罷了
      512991