|
本帖最后由 小蜗牛 于 2025-8-29 05:34 编辑
由于写代码,老要多写一行: 置随机数种子~
很恼火.所以就自己撸了一个...
要知道,火山封装一个库,一行代码就是1.2元,一想到这里,每写一个置随机数种子..我就亏了1.2元!!
没多少代码,就不上传文件了~
优点:
1: 不需要自己置随机数种子.省事
2: 高质量随机数,不用担心随机性的问题~
3: 高性能,线程安全,无锁
4: 本方法循环一亿次0.4秒,火山自带循环一亿次1.3秒
<火山程序 类型 = "通常" 版本 = 1 />
方法 取随机数 <公开 静态 类型 = 整数 注释 = "优点:" 注释 = " 1: 不需要自己置随机数种子.省事" 注释 = " 2: 高质量随机数,不用担心随机性的问题~"
注释 = " 3: 高性能,低开销,线程安全,无锁" 注释 = " 4: 本方法循环一亿次0.4秒,火山自带循环一亿次1.3秒" @视窗.外部头文件 = "<random>"
@禁止流程检查 = 真>
参数 a <类型 = 整数>
参数 b <类型 = 整数>
{
@ static thread_local std::mt19937 fanrenlei = [] {
@ std::uint32_t seed[3] = {
@ static_cast<std::uint32_t>(::GetCurrentThreadId()),
@ static_cast<std::uint32_t>(std::random_device{}()),
@ static_cast<std::uint32_t>(
@ std::chrono::steady_clock::now().time_since_epoch().count())
@ };
@ std::seed_seq seq(seed, seed + 3);
@ return std::mt19937(seq); // 直接返回引擎
@ }();
@ std::uniform_int_distribution<int> dist(@<a>, @<b>);
@ return dist(fanrenlei);
}
|
|