递归火山软件开发平台
标题:
取随机数 (mt19937)
[打印本页]
作者:
小蜗牛
时间:
7 小时前
标题:
取随机数 (mt19937)
本帖最后由 小蜗牛 于 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);
}
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4