[C++11]C++11带来的随机数生成器

C++11引入了random库,包括random_device用于获取非确定性随机数,以及random number engine和random number distributions两个部分,分别用于生成随机数和特定分布的随机数。random_device在Linux下基于/dev/urandom,而在Windows下使用rand_s。标准库提供了linear_congruential_engine、mersenne_twister_engine和subtract_with_carry_engine三种随机数引擎,其中mersenne_twister_engine被认为是最佳的伪随机数生成器。推荐使用random_device产生的随机数作为引擎的种子。此外,还介绍了如何使用各种分布如平均分布和正太分布。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++11带来诸多特性,random就是其一.

1. random_device

  标准库提供了一个非确定性随机数生成设备.在Linux的实现中,是读取/dev/urandom设备;Windows的实现居然是用rand_s,在这里强烈谴责一下.

  random_device提供()操作符,用来返回一个min()到max()之间的一个数字.如果是Linux(Unix Like或者Unix)下,都可以使用这个来产生高质量的随机数,可以理解为真随机数.

#include <iostream>
#include <random>
int main()
{
  std::random_device rd;
  for(int n=0; n<20000; ++n)
    std::cout << rd() << std::endl;
  return 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值