pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

從多個線程使用 stdlib 的 rand()

Using stdlib#39;s rand() from multiple threads(從多個線程使用 stdlib 的 rand())
本文介紹了從多個線程使用 stdlib 的 rand()的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有幾個線程都運行相同的功能.在其中的每一個中,它們都會多次生成不同的隨機數.我們試圖通過將 srand(time(0)) 放在函數的開頭來做到這一點,但它們似乎都得到了相同的數字.

I have several threads which all run the same function. In each of these they generate a different random number several times. We tried to do this by putting srand(time(0)) at the start of the function, but it seems that they all get the same number.

我們是否需要每個程序只調用一次 srand(time(0)) ,即在 main 的開頭(例如),在每個程序的開頭被多次調用的函數,還是別的什么?

Do we need to call srand(time(0)) only once per program, i.e at the start of main (for example), at the start of each function that is called several times, or something else?

推薦答案

srand() 種子隨機數生成器.您應該只需要在啟動期間調用 srand(time(NULL)) 一次.

srand() seeds the random number generator. You should only have to call srand(time(NULL)) once during startup.

也就是說,文檔指出:

函數 rand()不可重入的或線程安全,因為它使用隱藏在每次調用時修改的狀態.這可能只是種子值被下一次調用使用,或者它可能做一些更精細的事情.為了獲得可重現的行為線程應用程序,此狀態必須明確.功能rand_r() 提供了一個指向一個 unsigned int,用作狀態.這是一個非常少量的狀態,所以這個功能會很弱偽隨機發生器.嘗試drand48_r(3) 代替.

The function rand() is not reentrant or thread-safe, since it uses hidden state that is modified on each call. This might just be the seed value to be used by the next call, or it might be something more elaborate. In order to get reproducible behaviour in a threaded application, this state must be made explicit. The function rand_r() is supplied with a pointer to an unsigned int, to be used as state. This is a very small amount of state, so this function will be a weak pseudo-random generator. Try drand48_r(3) instead.

上面強調的部分可能是你所有線程得到相同數字的原因.

The emphasized part of the above is probably the reason why all your threads get the same number.

這篇關于從多個線程使用 stdlib 的 rand()的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

What is the fastest way to transpose a matrix in C++?(在 C++ 中轉置矩陣的最快方法是什么?)
Sorting zipped (locked) containers in C++ using boost or the STL(使用 boost 或 STL 在 C++ 中對壓縮(鎖定)容器進行排序)
Rotating a point about another point (2D)(圍繞另一個點旋轉一個點 (2D))
Image Processing: Algorithm Improvement for #39;Coca-Cola Can#39; Recognition(圖像處理:Coca-Cola Can 識別的算法改進)
How do I construct an ISO 8601 datetime in C++?(如何在 C++ 中構建 ISO 8601 日期時間?)
Sort list using STL sort function(使用 STL 排序功能對列表進行排序)
主站蜘蛛池模板: 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 科普仪器菏泽市教育教学仪器总厂 | 团建-拓展-拓展培训-拓展训练-户外拓展训练基地[无锡劲途] | 艺术涂料|木纹漆施工|稻草漆厂家|马来漆|石桦奴|水泥漆|选加河南天工涂料 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 专注氟塑料泵_衬氟泵_磁力泵_卧龙泵阀_化工泵专业品牌 - 梭川泵阀 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 撕碎机,撕破机,双轴破碎机-大件垃圾破碎机厂家 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 广东泵阀展|阀门展-广东国际泵管阀展览会 | 哈希PC1R1A,哈希CA9300,哈希SC4500-上海鑫嵩实业有限公司 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 粉碎机_塑料粉碎机_塑料破碎机厂家-星标机械 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 存包柜厂家_电子存包柜_超市存包柜_超市电子存包柜_自动存包柜-洛阳中星 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 荣事达手推洗地机_洗地机厂家_驾驶式扫地机_工业清洁设备 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 开云(中国)Kaiyun·官方网站 - 登录入口 | 亿诺千企网-企业核心产品贸易 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 首页|成都尚玖保洁_家政保洁_开荒保洁_成都保洁 | 南京办公用品网-办公文具用品批发-打印机耗材采购 |