C语言随机数的产生
来源:互联网 发布:辐射4enb画质优化补丁 编辑:程序博客网 时间:2024/05/02 00:28
调试环境:win10+vs2015
在编程中我们经常需要使用随机数用来进行测试,因此就需要使用到rand()函数,这里就来详解一下C语言随机数生成器。
rand()函数的原型是:int rand ( void );
该函数不需要传参,返回一个伪随机整数范围在0到RAND_MAX
在vs2015中,RAND_MAX的定义为:#define RAND_MAX 0x7fff也就是十进制的32767
在rand()函数中内部是去找srand()函数,经过一个算法生成随机数。
那么我们就需要了解一下srand()函数了
srand():初始化随机数发生器
srand()的函数原型:void srand(unsigned int _Seed);
该函数需要传入一个无符号的整形参数,没有返回值
总体上的意思就是:
给srand()函数传一个参数,作为rand()函数的种子,rand()函数用这个种子经过一个算法生成一个0到RAND_MAX的随机数,但是这样问题就来了,该算法是定死了的,也就是说给srand()函数传的参数如果相同的话就会产生相同的随机数,这样的随机数称之为伪随机数。如果要每次得到的随机数都不一样就需要换一个种子,所以我们就需要使用time()函数,将现在的时间毫秒值作为种子,因为毫秒单位时间变化比较快,所以这样可以将数做的更随机。
time():时间函数
time()函数原型:time_t time ( time_t * timer );
传入一个time_t指针类型的参数,返回一个time_t类型的值
在vs2015里面time_t的定义为
typedef long __time32_t;typedef __time32_t time_t;
也即time_t是一个long类型的。
经测试,不管传入参数是time_t类型的指针还是NULL都会返回当前时间的毫秒值。
这样随机函数就完美实现了。
总结:首相调用time()函数获取当前时间毫秒值,再将其传入srand()函数生成种子,最后经rand()函数的算法产生一个由当前毫秒数产生的随机值。
- C语言随机数的产生
- C语言随机数的产生
- C语言随机数的产生
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言:产生随机数。
- c语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C语言产生随机数
- C++ - string类型转换int类型
- 在Eclipse添加Android兼容包( v4、v7 appcompat )(转)
- Perfect Squares
- Java受检异常和非受检异常
- HDU 5992 (kdtree)
- C语言随机数的产生
- C++中int型与string型互相转换
- 浅析数据结构之线性表<二>
- android:allowBackup
- POPUP + 控件重写 + 从属关系数据绑定
- Maven创建项目工厂和设置权限
- SG函数(Treblecross游戏,UVA 10561)
- 冒泡排序和选择排序法的图示解析
- hdu5818 Joint Stacks 数据结构