网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 时尚美容

c 如何产生50000至150000之间的随机数

时间:2024-10-20 03:04:20

在日常编程中我们经常会遇到需要随机数的情况,虽然目前的随机数都是伪随机,不过还是可以满足需求的。那么在C语言中,我们该如何产生一定范围内的随机数呢?

c 如何产生50000至150000之间的随机数

二、了解相关库函数

1、首先来看看C语言的库函数。可以看到伪随机数生成器是在头文件stdlib.h中定义的。主要是两个函数:rand 和 srand。

c 如何产生50000至150000之间的随机数

3、再来看看库函数:srand

c 如何产生50000至150000之间的随机数

三、编写随机数生成代码

1、其实我们在rand文档中就可以看到相关的代码。

c 如何产生50000至150000之间的随机数

3、那么如何才能够让程序运行时生成的伪随机数看起来是随机的,起码不是一个不变的随机数。这就要用到我们的srand函数了。srand函数是用一个随机数种子初始化随机数生成器的。如果不使用sr锾攒揉敫and来初始化随机数生成器,那么rand生成的结果是与srand(1)是一样的。我们来看看是不是这样。

c 如何产生50000至150000之间的随机数

5、看来,我们只有给srand赋值不同的参数才能解决这个问题。那么该如何在程序运行时保证srand的参数不一样呢。你一定想到了时间这个东西,没错就是将时间传递给srand。上代码,我们代码一次生成了10个伪随机数。看起来貌似是那么回事了,好像能够正常工作。但是这里面有一个坑。

c 如何产生50000至150000之间的随机数

2、上面的运行结果有什么问鞑民略锈题?我们看到生成的40个伪随机数有50000+、60000+、70000+、80000+,最大的数是82556。没有一个90000以上的,实际上也不会出现一邗锒凳审个大于82767,也就是不会出现一个大于50000+32767的数。你可能觉得是生成的数少造成的,但是答案是无论你生成多少数都是我说的那样。为什么?我们看rand的文档说,rand生成的数在0-RAND_MAX之间,这个RAND_MAX我们已经打印出来了,是32767。也就是rand生成的最大数是32767,所以再加50000,最大也就是82767。既然这样,那该怎么办。看代码:

c 如何产生50000至150000之间的随机数

五、进一步建议

1、在最新的C++11标准中,有一个random库也提供了随机数生成功能。相比较来说功能更强大,使用更方便,起码在生成大随机数时比C库要方便。

c 如何产生50000至150000之间的随机数
© 五度知识库