随机数-new

文章介绍了C++中mt19937随机数生成器的使用,它是C++标准库的一部分,能产生高质量的随机数,无需设定种子,且能方便地指定范围。相比rand()函数,mt19937更加强大,适用于各种算法和数据结构如树堆、平衡树等。示例代码展示了如何定义和使用mt19937来生成指定范围内的整数。
摘要由CSDN通过智能技术生成

这篇文章是对以前 OI生成随机题目数据,测试点集锦【C++】【有待完善】 的一个补充:

正文

在那一篇文章中,我出数据用的是 standrand 的随机数,但是这样不仅有时较大数据出不出来(当时我的rand只能产生0~30000左右的数据)很麻烦,所以今天给大家说一种非常good的随机数;

这个随机数我叫它mt19937,是一个c++自带的随机数,直接用万能头文件即可运行,其定义方式如下:

random_device R;
mt19937 G(R());

(编译错误可能是版本不对,这里以CCF的编译环境为准)

注意定义不能随意修改,想要调用它产生随机数也很简单,只需要一个函数:

uniform_int_distribution<int>(l,r)(G);

其中int部分是指产生随机数的类型; l , r l,r l,r 是产生随机数的范围区间 [ l , r ] [l,r] [l,r];

这个东西就比rand()强多了,也不需要设置种子,除了出数据,还可以应用在树堆,平衡树等数据结构上,下面给出一般写法;

一般写法

random_device R;
mt19937 G(R());
int rd(int l,int r){
	return uniform_int_distribution<int>(l,r)(G);
}

这其中如有什么是蒟蒻讲的不对的,欢迎评论改正,补充!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值