隨機數產生函數

隨機數產生函數  函數

 

示例:spa

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i;
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);

    }
    


    getchar();
    return 0;
}

運行結果:3d

1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
1025202362 code

再次運行blog

1804289383
846930886
1681692777
1714636915
1957747793
424238335
719885386
1649760492
596516649
1189641421
1025202362 get

和上面如出一轍!得出結論:rand()是僞隨機,每次運行的結果同樣。那麼怎麼避免這種「僞隨機」呢?那就要另一個函數srand()配合,srand()它的意思是:置隨機數種子。只要種子不一樣,rand()產生的隨機數就不一樣。io

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i;
    srand(100); for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

運行結果:class

677741240
611911301
516687479
1039653884
807009856
115325623
1224653905
2083069270
1106860981
922406371
876420180 隨機數

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a,i;
    srand(10);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

結果:方法

1215069295
1311962008
1086128678
385788725
1753820418
394002377
1255532675
906573271
54404747
679162307
131589623

隨機數種子不一樣,產生的結果再不相同。

怎麼讓它每次生成的都不同呢,系統的時間是不停變化的,咱們是否是能夠利用呢?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a,i;
    unsigned int tm = time(NULL); srand(tm);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand();
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

運行第一次:

1943618223
1373471778
1476666181
2054163504
937505999
1233927247
1056853368
1812086252
862771187
530774611
1117905961

運行第二次:

969995764
349618453
203599721
151758322
444368239
1714632333
2034185210
145622174
1608107639
1863907432
2110476585

運行第三次:

1637559588
1103816085
742512873
331771740
981048319
2136780304
662571564
380818899
1190877608
2101919912
359796216

上面的結果再不相同了,但生成的隨機數都比較大,能不能自定義生成在一個範圍內的數呢?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a,i;
    unsigned int tm = time(NULL);
    srand(tm);
    for (i=0 ; i<=10 ; i++)
    {
        a = rand()%101; //只生成從0到100之間的隨機數
        printf("%d \n", a);
    }
    getchar();
    return 0;
}

運行:

73
26
73
16
3
70
10
37
83
50
40

用取餘的方法控制隨機數的範圍。

相關文章
相關標籤/搜索