C++随机数用法

随机数分布

随机数分布一般用到均匀分布 uniform_int_distribution<IntT> u(m, n);uniform_real_distribution<RealT> u(x, y); 生成指定类型的,在给定范围内的值。其中 mx 是可以返回的最小值; ny 是最大值。默认的 m 为 0 且 nIntT 可表示的最大值。默认 x 为 0 且 y 为 1.0 。

随机数引擎

default_random_engine
某个其他引擎类型的类型别名,目的是用于大多数情况。
linear_congruential_engine
minstd_rand0 的乘数为 16807 ,模为 2147483647 ,增量为 0 。
minstd_rand 的乘数为 48271 ,模为 2147483647 ,增量为 0 。
mersenne_twister_engine
mt19937 为 32 位无符号美森旋转生成器。
mt19937_64 为 64 位无符号美森旋转生成器。

使用方法
#include <random>
#include <iostream>
 
int main()
{
    std::random_device rd;  // 将用于为随机数引擎获得种子
    std::mt19937 gen(rd()); // 以播种标准 mersenne_twister_engine
    std::uniform_int_distribution<> dis(1, 6);
 
    for (int n=0; n<10; ++n)
        // 用 dis 变换 gen 所生成的随机 unsigned int 到 [1, 6] 中的 int
        std::cout << dis(gen) << ' ';
    std::cout << '\n';
}
参考资料

https://zh.cppreference.com/w/cpp/numeric/random

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值