随机数---秒及毫秒级随机数种子(C++)
来源:互联网 发布:电脑tv电视直播软件 编辑:程序博客网 时间:2024/05/16 10:44
一、函数
1、rand
函数原型: int rand(void);
所在头文件: stdlib.h
功能描述: rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int),用unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中的机率是相同的。用户未设定随机数种子时,系统默认的随机数种子为1。rand()产生的是伪随机数字,每次执行时是相同的,若要不同,用函数srand()初始化它。
2、srand
函数原型: void srand(unsigned int seed);
所在头文件: stdlib.h
功能描述: srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用time(0)的返回值或NULL来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
3、time
函数原型: time_t time(time_t *t);
所在头文件: time.h
返回值:成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno 中
功能描述: 此函数会返回从公元 1970 年1 月1 日的UTC 时间从0 时0 分0 秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t 指针所指的内存。
4、ftime
函数原型: int ftime(struct timeb *tp);
所在头文件: sys/timeb.h
返回值:无论成功或失败都返回0
功能描述: ftime()将目前日期由tp所指的结构返回。tp结构定义:
struct timeb{ time_t time; /* 为1970-01-01至今的秒数*/ unsigned short millitm; /* 千分之一秒即毫秒 */ short timezonel; /* 为目前时区和Greenwich相差的时间,单位为分钟 */ short dstflag; /* 为日光节约时间的修正状态,如果为非0代表启用日光节约时间修正 */};
二、代码实例:
1、以秒为随机数种子
unsigned int tseed = time(NULL);srand(tseed);unsigned int crand = rand();
2、以秒为随机数种子产生一定范围内的数值
unsigned int tseed = time(NULL);srand(tseed);// 生成[b,a]范围内的数值,包括b和aunsigned int range = a - b + 1;unsigned int crand = rand() % range + b;// 生成[b,a)范围内的数值,包括b,不包括aunsigned int range = a - b;unsigned int crand = rand() % range + b;
3、以毫秒为随机数种子
struct timeb timeSeed;ftime(&timeSeed);srand(timeSeed.time * 1000 + timeSeed.millitm); // milli timeunsigned int crand = rand();
4、以毫秒为随机数种子产生一定范围内的数值
struct timeb timeSeed;ftime(&timeSeed);srand(timeSeed.time * 1000 + timeSeed.millitm); // milli time// 生成[b,a]范围内的数值,包括b和aunsigned int range = a - b + 1;unsigned int crand = rand() % range + b;// 生成[b,a)范围内的数值,包括b,不包括aunsigned int range = a - b;unsigned int crand = rand() % range + b;
- 随机数---秒及毫秒级随机数种子(C++)
- 随机数种子
- 随机数种子与随机数
- 随机数、随机数种子
- 随机数---应用随机数种子
- 随机数和随机数种子
- srand(设置随机数种子)
- 种子随机数问题及今天的作业
- C#中的随机数种子
- 随机数种子的作用
- 随机数 & 随即种子
- 根据种子生成随机数。
- 随机数与随机种子
- delphi随机数种子
- erlang 随机数种子
- Java random 随机数种子
- matlab 随机数种子
- C++置随机数种子
- Q112:用Xcode调试程序(以PBRT-V3中的pbrt为例)
- Kafka介绍
- android微信支付集成步骤
- String
- RSA加密算法总结
- 随机数---秒及毫秒级随机数种子(C++)
- JavaScript的学习笔记(一)
- Java学习全过程
- JavaMail邮件发送解析
- android sdk manager 无法更新
- 伪静态与静态
- Apache Kudu:用于实时分析的最佳用例
- 微信小程序开发(四)获取用户openid
- 阿里云上部署java8和hadoop3.0、spark、hive及Mahout