【C++】随机数引擎
标签:默认 1.0 min() 需要 c++ size_t font col min
rand()
- 基本:使用随机数时,经常见到的是C标准库提供的函数rand(),这个函数会生成一个0到RAND_MAX之间的一个整形数;
- 分布:为了得到一个给定范围内的随机数,通常会对生成的随机数取余:rand()%n,rand()%(n-m)+m;
- 种子:通过srand()设置随机数种子,种子不变的情况下,每次程序运行,调用rand(),都会生成相同的随机数序列;
- 浮点:使用double(rand())/RAND_MAX可以生成0-1范围内的随机浮点数,但精度会有问题;
-
一般情况下,srand()种子可以使用time(0)进行设置,time()取系统的秒,所以如果srand()和rand()的调用间隔小于1s,则会生成相同的随机数,如:
for (size_t i = 0; i 10; i++)
{
srand(time(0));
cout endl;
}
C++11 : default_random_engine
- 基本:C++11提供了新的随机数生成器,随机数引擎default_random_engine,使用时包含头文件#include;
- 范围:默认情况下,default_random_engine的生成范围是一个unsigned,可以通过方法min()和max()获取生成范围;
- 种子:与rand()类似,default_random_engine也需要通过随机数种子改变生成的序列,设置方法可以通过调用方法seed();
- 分布和浮点:随机数引擎可以通过分布对象设置生成范围,uniform_int_distribution或uniform_real_distribution;
-
相对rand(),可以使用uniform_real_distribution生成随机浮点数,并且不用担心精度问题,随机数引擎的使用方法如下:
default_random_engine e;//定义随机数引擎
uniform_int_distribution id(1, 10);//整型分布
uniform_real_distributiondouble> dd(0, 1.0);//浮点型分布
e.seed(10);//设置随机数种子
for (size_t i = 0; i 10; i++)
{
cout " ; " endl;
}
【C++】随机数引擎
标签:默认 1.0 min() 需要 c++ size_t font col min
原文地址:https://www.cnblogs.com/esCharacter/p/9564660.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
【C++】随机数引擎
文章链接:http://soscw.com/index.php/essay/102915.html
评论