网站基建建设,wordpress 新建数据表,使用网站效果图,梧州网站建设有哪些random
完整文档看这里 三步走:
选择一种随机数种子选择一个随机数引擎选择一个随机数分布输出
随机数种子
//生成随机数种子,在Linux的实现中,是读取/dev/urandom设备
std::random_device rd;
unsigned seed1 rd();// 获取当前时间点作为随机数种子
unsigned seed2 std:…random
完整文档看这里 三步走:
选择一种随机数种子选择一个随机数引擎选择一个随机数分布输出
随机数种子
//生成随机数种子,在Linux的实现中,是读取/dev/urandom设备
std::random_device rd;
unsigned seed1 rd();// 获取当前时间点作为随机数种子
unsigned seed2 std::chrono::system_clock::now().time_since_epoch().count();随机数引擎
名称说明default_random_engine别名取决于编译器把某个引擎与其关联std::linear_congruential_engine std::minstd_rand0、std::minstd_rand线性同余引擎std::mersenne_twister_engine std::mt19937、std::mt19937_64Mersenne Twister引擎、梅森旋转算法std::subtract_with_carry_engine std::ranlux24_base 、std::ranlux48_base实现带进位减一种延迟斐波那契算法
随机数分布
有很多种 均匀分布、伯努利分布、泊松分布、正态分布、采样分布等等 日常开发中均匀分布用的比较多随机抽样、模拟掷骰子、简单的游戏随机数生成时均匀分布非常常见
均匀分布
std::uniform_int_distribution正态分布
normal_distribution总结
建议优先使用
random_device 生成随机数种子随机数引擎 使用 mt19937随机数分布采用 均与分布然后这些只是普通用用就好涉及到加密安全领域请使用加密安全库(例如: OpenSSL 库)。
上代码
#include iostream
#include random
using namespace std;int main()
{// 生成随机数种子std::random_device rd;//梅森旋转算法std::mt19937 mt(rd());//均匀分布std::uniform_int_distribution dis(1, 100);for(int i0;i10;i){std::coutdis(mt)endl;}return 0;
}如果需要封装成函数可以这样写:
#include randomint mt_rand(int min, int max) {static std::random_device rd; // 静态随机数种子static std::mt19937 mt(rd()); // 静态梅森旋转引擎只初始化一次std::uniform_int_distributionint dis(min, max); // 均匀分布return dis(mt); // 生成并返回随机数
}