递归火山软件开发平台

标题: 取随机数 (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