
在解决百万皇后问题的时候,需要产生超大规模的随机数
然而rand()
并不能完成这个需求
下面给出一个C++下的超大规模随机数生成器
typedef std::subtract_with_carry_engine<std::uint_fast64_t, 48, 5, 12> ranlux48_base; ranlux48_base rb;
可以输出rb.min()
和rb.max()
看看这个东西的范围
用rb()
生成一个随机数
数据的范围是unsingned long long int
,如果需要使用类似int r = rb() % N
的语句,需要做类型转换
超大规模随机数的应用,你可以查看:
如果需要负数的随机数,其实可以利用
int r = rb()
的溢出来完成