C语言中产生随机数的方法

C语言中产生随机数的方法


2024年4月30日发(作者:)

C语言中产生随机数的方法

引例:产生10个[100-200]区间内的随机整数。

#include

#include //rand函数的头文件

#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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信