回覆列表
  • 1 # 變餅檔

    1.概念A:srand用來設定隨機數種子的,rand用來產生隨機數的

    srand(1);//1為隨機的數的種子

    printf("%d", rand());//因為種子為1不變,產生的隨機數是不變的

    2.void srand(unsigned int)檢視引數為unsigned int

    time_t time(time_t *);//time的建構函式帶參time_t *

    typedef long time_t; //time.h定義time_t為long

    time(NULL);time(0)//返回的是一個long型時間值,取的是當前系統時間,因此總是變化的

    3.srand(time(NULL))就是設定當前的時間值為種子,那麼種子總是變化的

    printf("%d", rand());//因為種子總是變化的,所以以該種子產生的隨機數總是變化的

    這裡比較time(NULL)和time(0),沒有多大意義啊

    4.核心你該搞清楚 srand是怎麼用的:srand定義種子,如果種子是個常量,那麼產生的隨機數不變,所以需要一個

    總是變化的種子,而系統時間總是變化的將時間值轉化成unsigned int傳入srand就達到了產生可變種子的目的.因此

    int iRet = rand()//產生的隨機數每次都不一樣

    小例子:

    #include <stdlib.h>

    #include <stdio.h>

    #include <time.h>

    void main( void )

    {

    int i = 0;

    srand( (unsigned)time(NULL));

    //srand((unsigned int)time(0));

    //srand(1);

    for( i = 0; i < 100; i++ )printf("%d,[1,10]=%d\n", rand(), (rand()%10+1));

    }

  • 中秋節和大豐收的關聯?
  • 身邊的朋友都在討論現在很多的閃婚問題,請問21世紀多大年齡適合結婚呢?