2024年4月30日发(作者:)
C语言中产生随机数的方法
引例:产生10个[100-200]区间内的随机整数。
#include
#include
#include
int main()
{
int i; //循环变量
srand((unsigned) time(NULL)); //产生随机数的起始数据(以时间为种子)
for (i=0; i<10; i++)
//printf("%dn", rand()); //产生[0,0x7fff)即[0,32767)以内的随机整数
//printf("%dn", rand()%100); //产生0-99的随机整数
printf("%dn", rand()%(200-100+1) + 100); //产生[100,200]内的随机整数
return 0;
}
在C语言中产生随机数需要以下几个函数的配合使用。
(1)rand函数——产生伪随机数
原型: int rand(void)
头文件: stdlib.h
功能:产生从0到RAND_MAX之间的随机数。
六进制数7FFF,也就是十进制数32767)。
例:
#include
#include
int main()
{
int k;
的值通常是0x7fff(十RAND_MAX
k = rand();
printf("%dn", k);
return 0;
}
编译运行,发现每次运行程序产生的随机数都是一样的。
计算机中产生随机数,实际是采用一个固定的数作为“种子”,在一个给定的复杂算法
中计算结果,所以叫“伪随机数”。
C语言中由于采用固定的序列作为种子,所以每次执行所取的是同一个数。
为上面的例子增加一个循环结构:
#include
#include
int main()
{
int k,i;
for (i=0;i<10;i++)
{
k = rand();
printf("%dn", k);
}
return 0;
}
运行时会产生10个互不相同的随机数。但再次运行,产生的还是这10个数。
为了产生不同的随机数列,需要srand函数来改变随机数种子。
(2)srand()函数
原型:void srand(unsigned seed)
头文件:stdlib.h
功能:由随机数种子seed进行运算产生随机数的起始数据。与rand函数配合使用,
可产生不同的随机数列。
例:
#include
#include
#include
int main()
{
int i;
srand((unsigned) time(NULL)); //函数time取得时间,其头文件是time.h
for (i=0;i<10;i++)
printf("%dn", rand());
return 0;
}
程序运行时,每次产生10个不同的随机数。因为采用时间作为种子,而时间一直在
变化,所以就产生了“随机”的随机数了。
在实际应用中,常需要产生指定范围的随机整数。可采用下面给出的表达式。
(3)产生指定区间的随机数
采用表达式 rand()%(Y-X+1)+X 可以产生[X,Y]区间内随机整数。
例如:
rand()%100
rand()%(200-100+1) + 100
//产生0~99间的随机数
//产生100-200间的随机数
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714460886a2450905.html
评论列表(0条)