首页 > 其他分享 >线程安全的随机数生成

线程安全的随机数生成

时间:2023-06-18 14:01:20浏览次数:26  
标签:随机数 Generator boost nFrom 线程 nTo pRng 生成


线程安全的随机数生成

(金庆的专栏)

* rand()不可重入
* 用线程专用存储保存随机数生成器
* 自动设置随机种子为设备随机数
* 线程退出时,自动析构生成器

typedef boost::random::mt19937 Generator;
static boost::thread_specific_ptr<Generator> s_pRng;

static Generator & GetGen()
{
    Generator * pRng = s_pRng.get();
    if (pRng) return *pRng;

    s_pRng.reset(new Generator);
    s_pRng->seed(boost::random_device()());
    return *s_pRng.get();    
}

Uint32 Rand32()
{
    return GetGen()();
}

// Random in [nFrom, nTo].
int Rand(int nFrom, int nTo)
{
    if (nFrom > nTo)
        boost::swap(nFrom, nTo);
    BOOST_ASSERT(nFrom <= nTo);
    boost::random::uniform_int_distribution<int> dist(nFrom, nTo);
    return dist(GetGen());
}


标签:随机数,Generator,boost,nFrom,线程,nTo,pRng,生成
From: https://blog.51cto.com/u_16162321/6508362

相关文章

  • git 连接gitlab,生成密钥
    git连接gitlab1.下载并安装git和TortoiseGit-2.6.0.0-64bit.msi2.生成秘钥信息2.1新建.ssh文件夹在C:\Users\csj\.ssh2.2在.ssh目录下右键打开GitBash(.ssh目录不存在,则在任一目录下操作,或者手动创建该目录)2.3在弹出的窗口输入:ssh-keygen-trsa-C"5......
  • 后台用异步线程调用的场景与常用方式
    一.异步执行的场景:完成业务后,发短信、发邮件、微信公众号等消息推送提示的功能,可以采用异步执行。在导入数量量过大等情况下,可以使用异步导入的方式,提高导入时间等。...等等二.实现的方式:1.springboot中,进行线程池配置,然后用@Async标识异步执行方法即可,如下:(需要注意的@Enable......
  • Java中线程等待和唤醒
    Java中线程等待和唤醒本文主要是对Java中线程等待、唤醒相关的内容进行总结。线程的生命周期和状态Java线程在运行的生命周期中的指定时刻只可能处于下面6种不同状态的其中一个状态:NEW:初始状态,线程被创建出来但没有被调用start()。RUNNABLE:运行状态,线程被调用了s......
  • 关于最小生成树
    关于最小生成树目录概述性质Prim算法实现例P1194买礼物Kruskal算法实现思想例P4047部落划分Part1概述一个连通图的生成树是一个极小的连通子图,它包含图中全部的n个顶点,但只有构成一棵树的n-1条边。我们定义无向连通图的最小生成树(MinimumSpannin......
  • 【AD20专栏】BOM表生成
    转载自:文章《AD19导出bom表的方法(按照元件不同数值分类,重点信息突出)》 我画电路图用的是AD19的软件,最后板子画好了要进行元器件采购要生成bom表,查了一下相关的资料,总结整理一下:1.在报告(report)打开BillofMaterials(在PcbDoc或者SchDoc打开都可以)。位置如下图所示: 2.为了按......
  • Spring框架中的线程池
    Spring框架中的线程池使用Java的ExecutorService接口实现ExecutorService是Java提供的用于管理线程池的高级工具。下面是在Spring框架中使用线程池的一般步骤:导入所需的依赖首先,确保你的项目中包含了使用线程池所需的依赖。通常情况下,你可以使用SpringBoot来创建项目,它会自动包含......
  • 解决PS 24.6beta版AI填充生成报错error response image not found:1000
    许多朋友问PS24.6beta版AI填充功能最近使用中,经常会遇到点击生成后,报错弹窗errorresponseimagenotfound:1000,怎么解决。之前用的还好好的Photoshop24.6beta测试版本,最近使用创成式填充时总是莫名其妙的弹窗:"我们正面临高峰需求,请稍后并尽快重试提示"以及"errorresponseim......
  • python 生成器 yield
    生成器属于迭代器https://mp.weixin.qq.com/s/F3GLVY2EUpISpt_koCDmWg生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方......
  • 生成式AI - 关键技术历史和发展
    ✈️当谈及生成式人工智能(AI),我们进入了一个令人惊叹的领域,它不仅改变了我们与技术的互动方式,而且极大地推动了人工智能的发展。通过模仿人类创造力和想象力的能力,生成式AI引领着我们走向了全新的可能性。让我们一起回顾生成式AI的历史和发展,探索它如何从最初的概念逐渐演化为我们日常......
  • DragGAN图像生成原理与实现
    DragGAN图像生成原理与实现DragGAN模型是什么呢1.DragGAN背景介绍2.模型方法2.1算法原理2.1.1MotionSupervision2.1.2点跟踪3.实现部署步骤3.1安装PyTorch3.2安装DragGAN3.3运行DragGANDemo3.4功能介绍项目地址:https://github.com/Zeqiang-Lai/DragGAN论文地址:http......