C++ 非常好用的生成随机数方法(全新方法!)

文章介绍了C++中生成随机数的三种常见方法,包括直接使用rand()、结合srand改变种子以及利用time函数获取种子。针对time函数在一秒钟内生成相同随机数的问题,作者提出了一种自定义的种子更新策略,通过在每次生成随机数后将种子加随机数本身,确保快速生成不同的随机数。
摘要由CSDN通过智能技术生成

前情提醒:初一生屑作,有错可在评论中指出XD

我们都知道,在c++中生成随机数需要使用rand函数,目前c++上生成随机数的主流方法有以下3种

一:直接使用rand()生成,如

number=rand();

这样有一个坏处,就是生成的数只会在一个列表中循环,因为c++生成的数是伪随机数,由电脑在序列中按照一定的种子选择,为了解决这个问题,我们就要用到srand函数。。

二:改变随机数生成种子,如

先使用srand(任意数字,如114514)改变种子,随后再

number=rand();

但是这样比较麻烦,毕竟我们还要一次一次手动去改变,为了方便一点,我们可以使用time函数来生成种子。

三:time生成种子(time包含在头文件<ctime>中),如

seed=time(0);

srand(seed);

number=rand();

这样就能方便的生成随机数,但它仍然有一个缺点,因为time获取的是秒数,所以一秒内只能改变一次种子。

假如你要在1秒内生成多个随机数,用上列的方法却只能得到同一个数,为了解决这个问题,我自己设计了一个程序,下面大家一起来看看罢(心虚)。

#include <iostream> //导入输入输出流

#include <cstdlib> //导入rand函数头文件

#include <ctime> //导入time函数头文件

using namespace std; //使用命名空间

int main(){ // 主函数,没什么好说的

unsigned seed,times; //定义两个无符号变量

int randd; //定义int型变量

times=time(0); //用time函数获取秒数

seed=times; //种子的初始状态用time

while (seed){ //无限循环

srand(seed); //将种子改变为变量seed

randd=rand(); //生成随机数

cout << randd << endl; //显示随机数

if (seed>1000000) seed=12; //避免因数值过大而导致程序崩掉

else seed+=randd; //将seed加上随机生成的数,完美保证了随机数的快速生成

}

}

总之,这就是我摸索出来的方法,

如果本文对你有所帮助,请点一个大大的赞 //没有硬币(大嘘)

如果你发现了错误,请在评论区指出

谢谢大家

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值