递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 8|回复: 0
打印 上一主题 下一主题

[视窗] 取随机数 (mt19937)

[复制链接]

97

主题

1040

帖子

5673

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5673
跳转到指定楼层
楼主
发表于 1 小时前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 小蜗牛 于 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);
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-8-29 06:53 , Processed in 0.079657 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表