C语言中用于产生随机数的函数是rand(), 下面我用程序详细说明一下如何在C语言下产生随机数。
示例代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int a;
a = rand()%101;
printf("a = %d\n", a);
return 0;
}
运行结果为:
$ ./a.out
a = 32
./a.out
a = 32
发现再运行时,不管运行多少次,都不会再次产生随机数。
将代码改成:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int a;
srand(12);
a = rand()%101;
printf("a = %d\n", a);
return 0;
}
运行结果:
./a.out
a = 59
./a.out
a = 59
发现a的值相对上个程序改变了一次。
如果将 srand(12);
改为 srand(34);
运行结果:
./a.out
a = 78
./a.out
a = 78
我们发现只要srand(N);N的值改变,产生的随机数也会改变。
再将代码改为:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int a;
srand((unsigned int)time(NULL));
a = rand()%101;
printf("a = %d\n", a);
return 0;
}
运行结果:
./a.out
a = 38
./a.out
a = 41
这就产生了不一样的随机数。
time函数是随时间一直增加的。
如何确定随机数的范围?
这个是取决于 程序
a = rand()%N;
其中,N表示整数,例如上例中,N为101,
则a的取值为0~100 。
如果想取值任意数之间,例如L~M,则N的取值为M-L+1,再加上L。具体如33~44之间的整数,
则应该为a = rand()%12 + 33;
示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int a[10];
int i;
srand((unsigned int)time(NULL));
for (i = 0; i < 10; i++)
{
a[i] = rand()%12 + 33;
printf("a[%d] = %d\n", i, a[i]);
}
return 0;
}
运行结果:
./a.out
a[0] = 34
a[1] = 43
a[2] = 44
a[3] = 34
a[4] = 44
a[5] = 37
a[6] = 37
a[7] = 38
a[8] = 35
a[9] = 44
如果您感觉本篇博客对您有帮助,请打开支付宝,领个红包支持一下,祝您扫到99元,谢谢~~