小蜗牛 发表于 2025-8-29 05:32:23

取随机数 (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 = {
    @    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);
}

小虾米006 发表于 2025-8-29 15:17:41

我这为啥报错了

小蜗牛 发表于 2025-8-29 22:04:40

小虾米006 发表于 2025-8-29 15:17
我这为啥报错了

不知道啊,我这里是可以的...

Xelloss0618 发表于 2025-8-29 22:42:42

小虾米006 发表于 2025-8-29 15:17
我这为啥报错了

https://bbs.voldp.com/thread-13700-1-1.html
页: [1]
查看完整版本: 取随机数 (mt19937)