Qt产生随机数

Qt产生随机数

提问:

有没有小伙伴遇到这么一种情况,使用rand()和qrand()函数生成的随机数好像不是那么随机,每次都一样。那这种就叫做"伪随机",因为没有种随机数种子,所以系统默认随机数种子是固定值。

在Qt项目中呢,生成随机数有两个步骤:

1.使用qsrand()种随机数种子

2.调用qrand()生成随机数

注意:

1.实践证明、如果是要在某一循环中产生随机数,随机数种子一定要写在循环外面,循环的时候用qrand()函数获取随机数。

2.千万、千万、千万不能在循环内部设置时间种子,因为CPU处理循环一次时间太短,会产生大量重复的值,这样获取的随机数是没有意义的。

3.切记!计算机产生的随机数都是伪随机数,不是真正意义的随机数,不能用它来进行某些统计计算等。

实现:

方法一:

javascript 复制代码
#include <QTime>
#include <QtGlobal>
QTime time;
time= QTime::currentTime();
qsrand(time.msec()+time.second()*1000);
或者
qsrand(QTime(0, 0, 0).msecsTo(QTime::currentTime()));
int n = qrand() % 10;    //产生10以内的随机数

方法二:

javascript 复制代码
#include <QTime>
#include <QtGlobal>
qsrand(0);
int n = qrand() % 10;    //产生10以内的随机数
相关推荐
曹牧1 分钟前
内部服务错误500
服务器·开发语言
while(1){yan}3 分钟前
HTTP的数据报格式
java·开发语言·网络·网络协议·http·青少年编程·面试
wuguan_4 分钟前
C#之List数组
开发语言·c#·list
Blasit8 分钟前
Qt C++ 编译 libevent静态库
开发语言·c++·qt
白完就是肥8 分钟前
QT编程之TCP编程
开发语言·qt·tcp/ip
宵时待雨12 分钟前
C语言笔记归纳19:动态内存管理
java·开发语言·算法
weixin_3077791313 分钟前
Jenkins Pipeline共享库(Shared Library)完全指南
运维·开发语言·自动化·jenkins·etl
weixin_3077791320 分钟前
Jenkins Font Awesome API插件:现代化插件界面的图标引擎
开发语言·前端·自动化·jenkins
铅笔小新z21 分钟前
【C++】 vector 全面解析:从使用到底层实现
开发语言·c++
好好沉淀21 分钟前
开发过程中动态 SQL 中where 1=1的作用是什么
java·服务器·开发语言·数据库·sql