使用std::default_random_engine可生成不同分布的随机数,下面使用实例来说明其使用。
- //利用当前时间生成的种子,可保证每次生成的值都不一样
- unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
- std::default_random_engine generator(seed);
- std::uniform_real_distribution<double> distribute(0.0, 1.0);//不包含1.0
- double v = distribute(generator);//得到0-1间的数值
-
- //利用当前时间生成的种子,可保证每次生成的值都不一样
- unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
- std::default_random_engine generator(seed);
- int min = 0,max = 100;
- std::uniform_int_distribution<int> distribute(min, max);//包含max
- int v = distribute(generator);
正态分布的均值为10,标准差为10:
- unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
- std::default_random_engine generator (seed);
- std::normal_distribution<double> distribution(10,10);
- double v = distribution(generator)
此外还可生成伯努利分布,泊松分布等分布的随机值