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