易百教程

随机数的种子

rand()函数为每个调用生成相同的随机数。要使输出更难预测,需要为随机数生成器设定种子。
这是通过使用srand()函数完成的。srand()函数需要stdlib.h头文件。该函数需要一个unsigned int值的种子。
scanf()函数使用%u占位符读取无符号值。 然后srand()函数使用种子值。

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

int main()
{ 
    unsigned seed; 
    int r,a,b; 

    printf("输入随机数种子: "); 
    scanf("%u",&seed); 
    srand(seed); 
    for(a=0;a<20;a++) 
    { 
       for(b=0;b<5;b++) 
       { 
           r=rand(); 
           printf("%d\t",r); 
       } 
       putchar('\n'); 
   } 
   return(0); 
}

执行上面示例代码,得到以下结果:

hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
输入随机数种子: 123
128959393       1692901013      436085873       748533630       776550279
289134331       807385195       556889022       95168426        1888844001
1353699824      809912668       686611921       1777811291      912905316
1045033381      1698004709      2051427207      1532780646      755994993
1808052926      778205365       822530699       168547991       373798976
1890856878      469573116       2080335148      1702214255      7523372
381141485       1831173648      1700424385      817227358       432223631
329491017       1106361689      1239608826      886380039       1201530116
980969180       92596215        2011442784      1667581101      1870407507
776864452       565130834       1420928568      680808011       2097911480
29439913        341377289       728633198       851970613       509925281
1102432174      595343843       979498397       1035283674      150074451
987021769       1416425159      1981248099      539962507       86168869
265988082       869453524       1192530559      1505596909      1755833563
246577027       339082441       1848429779      110536163       2006663542
1571353638      887400615       424310728       844798558       1568208626
374738560       874238471       1909585916      1103371758      1726209084
272027549       58320284        174069280       1251525946      1093603958
324143731       91064068        362545469       157908182       631026575
448714339       423896265       1500480099      1641244898      1929493174