首页 > 编程知识 正文

随机数C语言,随机数表的应用

时间:2023-05-05 06:15:45 阅读:135253 作者:3055

C语言如何使用随机数?

功能介绍推广C语言相关知识,提供C语言/C语言资料,讨论和学习C语言/C编程知识。 帮助正在学习c语言的同学们。

随机数的使用是许多在学习c语言过程中进行小功能开发的同学的技术问题。 今天说明在c语言中使用随机数的方法。

通常,使用最多的方法是通过使用rand函数随机生成伪随机数来完成随机数的生成工作。 注意这里的伪随机数不是假的! 只是计算机根据自己的理论生成的,不是“完全理想”状态的随机数,所以可以接受。

函数的原型是intrand(void ); 必须包含能够生成0到0 ~RAND_MAX之间的数字的stdlib头文件。 其中RAND_MAX为宏,在VC6中笔者表示为0x7fff,建议自行实验。

这个时候,你可能会遇到以下问题:

Q1 )为什么每次都会生成相同的数字?

A1 ) rand函数每次生成的数字都与所谓的“种子”相关,在使用rand函数之前需要使用srand函数生成各种子代(参见下文)。 如果未调用,则系统缺省设置为1,每次都会出现相同的随机数。

Q2 )为什么最大0x7fff?

A2 )这可能取决于编译器环境。 笔者这里是VC6。 rand的函数定义的最大值为0x7fff,如下图所示。

Q3 )如果想生成特定范围内的数字,该怎么写?

a3 :多利用%求余运算符就可以了。 例如:

生成10以内的数字。 rand (请参见)

生成1到10之间的数字。 请参阅rand () ) 1

要生成特定的介于a和b之间的数字,请参见rand (() ) ) %(b-a 1 ) ) a

在更多的情况下,希望每次运行生成的数字不同,但此时需要与srand函数合作解决这个问题。 有关具体原因,请参阅rand和srand函数实现的详细信息。 代码如下所示。

那么,srand函数是如何使用的呢? 让我们先看看函数原型:

voidsrand(unsignedseed ); 在使用rand函数之前,只需调用srand函数并传递种子即可。 但实际上传递的是一个数,在大多数情况下,发生的总是一定的。 那么,更聪明的写法现在只有将系统时间作为种子使用是最合适的,所以在这里,srand的参数作为time(null )参数,将系统的当前时间作为种子获取,往往会得到不同的结果

注意,类型匹配,并且srand((unsigned ) time ) (空); 请添加time.h的头文件。

测试代码如下所示。

大家可以自己参加测试。 如果你想学习C/C或者想学习C/C,我们的学习交流QQ群: 712263501群有相关的学习资料。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。