C++中随机数的生成

一. 伪随机数

在C++中要生成随机数,首先要include一个文件——<cstdlib>。cstdlib文件中包含与随机数生成有关的函数,最常见的是rand()函数,该函数可以返回一个一个随机数,简单用法如下:

#include <iostream>
#include <cstdlib>
using namespace std;

int main(){
    int rand_num=rand();
    cout<<rand_num<<endl;
    //system("pause");//在vscode上要显示cout的结果,需要加上这句
    return 0;
}

如上简单代码中函数rand()返回了一个随机数给int变量rand_num,运行结果:

 注意,函数rand()是不需要任何实参就可以返回一个随机数,但返回的随机数是基于数学公式在计算机内部生成的伪随机数,不是真正的随机数,因为每次运行程序所返回的随机数数组都是一样的排列,也就是说对于上述简单代码,无论运行多少次程序,结果都会返回给rand_num一个数41(不同的计算机数字可能会不同,但都不会变)。那么如何生成真随机数呢?

二. 真随机数

要生成真随机数,就得为随机数生成器确定随机数种子,利用种子的数(不同)来确定伪随机数序列中(不同的)起始位置,从而产生真随机数。这时需要用到函数srand(),代码如下:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main(){
    srand(static_cast<unsigned int>(time(0)));
    int rand_num=rand();
    cout<<rand_num<<endl;
    //system("pause");//在vscode上要显示cout的结果,需要加上这句
    return 0;
}

srand()需要传递一个unsinged int型的参数作为种子,在上述代码中time(0)返回一个基于当前计算机的日期和时间的数字(要使用这个函数,需要#include <ctime>),而static_cast<unsigned int>就可以把time(0)的返回值转换为unsigned int型。这样做的好处是因为时间是一直变化的,所有每次运行程序时,随机数生成器的种子就不同,就会产生不同的随机数(真随机数)。上述代码多次运行就会发现每次运行后,rand_num的值都会不一样。

第一次:

第二次:

 

 

感谢阅读!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金泽遗梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值