c語言0-1勻分布隨機數,C++ generate_canonical均勻分布隨機數函數用法詳解

標準均勻分布是一個在范圍 [0,1) 內的連續分布。generate_canonical() 函數模板會提供一個浮點值范圍在 [0,1) 內,且有給定的隨機比特數的標準均勻分布。它有 3 個模板參數:浮點類型、尾數的隨機比特的個數,以及使用的隨機數生成器的類型。函數的參數是一個隨機數生成器,因此最后一個模板參數可以推導出來。下面是它可能的用法:

std::vector data(8); // Container with 8 elements

std::random_device rd; // Non-determinstic seed source

std::default_random_engine rng {rd()}; // Create random number generator

std::generate(std::begin(data), std::end(data),[&rng] { return std::generate_canonical (rng); });

std::copy(std::begin(data),std::end(data),std::ostream_iterator {std::cout, " "});

在 lambda 表達式中,被調用的 generate_canonical() 函數被用來作為 generate() 算法的第三個參數。lambda 表達式會返回一個有 12 個隨機比特的 double 類型的隨機值,因此 generate() 會用這種數據來填充 data 中的元素。執行這些語句會產生如下輸出:

0.766197 0.298056 0.409951 0.955263 0.419199 0.737496 0.547764 0.91622

上面的輸出說明位數可能我們想要的要多,記住我們只指定了 12 個隨機比特。可以按如下方式限制輸出:

std::copy(std::begin(data), std::end(data),std::ostream_iterator{std::cout << std::fixed<< std::setprecision (4) , " "});

流操作符被應用到每個輸出值,因此現在的輸出可能如下所示:

0.8514 0.5707 0.8322 0.6626 0.7026 0.8854 0.5427 0.8886

如果真的想得到這些位,可以用 hexfloat 以十六進制的格式輸出這些值。

顯然,隨機位數越少,可能的隨機值的范圍越有限。可以通過將位數指定為這個類型的最大值來使范圍達到最大。下面是展示如何這么做的代碼:

std::vector data; // Empty container

std::random device rd; // Non-determinstic seed source

std::default_random_engine rng {rd()};//Create random number generator

std::generate_n(std::back_inserter(data), 10, [&rng]{return std::generate_canonical::digits>(rng); });

std::copy(std::begin(data), std::end(data),std::ostream_iterator {std:: cout, " "});

std::cout << std::endl;

注意,這和前面的代碼有些區別。這次,generate_n() 的第一個參數是 data 容器的 back_insert_iterator,因此可以通過調用它的成員函數 push_back() 來添加元素。generate_canonical() 的第二個模板參數是 numeric_limits 對象的 long double 類型的成員變量的 digits 值。這是這個類型的位數的比特數,因此可以指定這個類型可能的隨機比特位的最大個數(在筆者系統上只有 53 個)。筆者得到了這樣的輸出,但你的可能是不同的:

0.426365 0.0635646 0.208444 0.198286 0.338378 0.490884 0.841733 0.975676 0.193322 0.346017

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257351.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第三十四天 how can I 堅持

“不要把所有的雞蛋放在同一個籃子里”是錯誤的&#xff0c;投資應該像馬克吐溫說的那樣&#xff0c;要把所有的雞蛋放在同一籃子里&#xff0c;并小心的看好他。---巴菲特。 那盆花還沒死&#xff0c;但是我又能做什么呢&#xff1f;技術。永遠的技術。睡覺。轉載于:https://w…

01-Swift 介紹

簡介 Swift 語言由蘋果公司在 2014 年推出&#xff0c;用來撰寫 OS X 和 iOS 應用程序2014 年&#xff0c;在 Apple WWDC 發布 幾家歡喜,幾家愁愁者:只學Object-C的人歡喜者:之前做過java/python/js語言的人歷史 2010 年 7 月&#xff0c;蘋果開發者工具部門總監 Chris Lattner…

2017—2018 實驗報告:實驗一

實驗一&#xff1a;實驗報告 課程&#xff1a;程序設計與數據結構 班級&#xff1a; 1623 姓名&#xff1a; 張旭升 學號&#xff1a;20162329 指導教師&#xff1a;婁嘉鵬 王志強 實驗日期&#xff1a;9月25日 實驗密級&#xff1a; 非密級 預習程度&#xff1a; 已預習 必修/…

病床呼叫系統有顯示屏c語言,病床呼叫系統畢業設計

內容介紹完整版大學病床呼叫系統畢業設計&#xff0c;已修改完格式摘 要醫院已經從人工管理模式向智能化方向發展。“病床呼叫系統”可以實現對病房的智能化管理&#xff0c;可實現呼叫、求救警報、信息存儲、顯示等等功能。患者在住院期間&#xff0c;可能會在任意時間請求醫…

1. mybatis批量插入數據

通過list <insert id"saveByList" useGeneratedKeys"true" parameterType"java.util.List"> insert into T_App_Default_User(UserID,AppType,CreateTime)values <foreach collection"list" item"item" index&quo…

iOS開發 - Swift實現清除緩存功能

前言: 開發移動應用時&#xff0c;請求網絡資源是再常見不過的功能。如果每次都去請求&#xff0c;不但浪費時間&#xff0c;用戶體驗也會變差&#xff0c;所以移動應用都會做離線緩存處理&#xff0c;其中已圖片緩存最為常見。 但是時間長了&#xff0c;離線緩存會占用大量的…

c語言結構體單元測試,C語言結構體單元練習.doc

C語言結構體單元練習1.有以下定義和語句&#xff1a;struct student{ int age;int num; };struct student stu[3]{{1001,20},{1002,19},{1003,21}};main(){ struct student *p;pstu;…… }則以下不正確的引用是 。A) (p)->num B) p C) (*p).num D) p&stu.age2.有以下結構…

如何開啟IIS7以上的“IIS6管理兼容性”

護衛神PHP套件的安裝&#xff0c;需要開啟“IIS6管理兼容性”&#xff0c; 那么&#xff0c;如何開啟IIS7、IIS7.5、IIS8.0的IIS6兼容模式呢&#xff1f; 設置的時候&#xff0c;請參照如下截圖&#xff1a; 本文轉自黃聰博客園博客&#xff0c;原文鏈接&#xff1a;http://www…

pop to 特定的UIViewController

1. 我們可以推出到特定的UIViewController 2. 有一個類沒有navigationController&#xff0c;以前一般用delegate&#xff0c;我覺得我們可以把引用一個navigationController&#xff0c;然后使用它來推出另一個UIViewController轉載于:https://www.cnblogs.com/studyNT/p/4486…

藍橋杯:矩陣翻硬幣

題目地址&#xff1a;http://lx.lanqiao.org/problem.page?gpidT126 這道題強烈建議用java做&#xff0c;畢竟自帶BigInteger類。 此題看似是一道模擬題&#xff0c;但由于數據規模很大&#xff08;10的1000次方&#xff09;&#xff0c;只能找規律。規律是最終結果為sqrt(n)*…

ssh服務端口轉發詳解

端口轉發的概念和應用什么是端口轉發呢&#xff0c;我們知道&#xff0c;SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是&#xff0c;SSH 還同時提供了一個非常有用的功能&#xff0c;這就是端口轉發。它能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發&…

W ndoWs文件夾窗口,如何在本地網絡中訪問-Synology-NAS-上的文件-(Wndows).pdf

如何在本地網絡中訪問-Synology-NAS-上的文件-(Wndows)如何在本地網絡中訪問 Synology NAS 上的文件 (Windows)概述Synology NAS 經過專門設計&#xff0c;可快速簡單地在本地網絡中存儲和共享文件&#xff0c;讓您直接訪問 SynologyNAS 上的文件而沒有每次登錄 DSM 的麻煩。例…

左移與右移

左移 無論被移動的數是有符號還是無符號&#xff0c;左移一位相當于乘2(在不溢出的情形下) 右移 對于無符號數&#xff0c;右移一位相當于除以2&#xff1b; 對于有符號數&#xff0c;如果還想獲得同樣右移除以2的效果&#xff0c;就要考慮算數右移&#xff0c;即符號位始終不變…

Serializing Lua objects into Lua Code

The following little snippet allows you to ‘pickle’ Lua objects directly into Lua code (with the exception of functions, which are serialized as raw bytecode). Metatable support is on the way, but for now, it should be useful enough. Example code: view s…

布局管理器android,Android課程---布局管理器之相對布局(一)

下面示例的是在父容器里如何設置按鈕的位置&#xff0c;難度&#xff1a;***&#xff0c;重點是找到一個主按鈕&#xff0c;設置它的id&#xff0c;然后根據它來設置其他按鈕在父容器的位置。代碼示例&#xff1a;android:layout_width"match_parent"android:layout_…

【Cocos2d-Js基礎教學 入門目錄】

本教程視地址頻在&#xff1a;九秒課堂 完全免費從接觸Cocos2dx-Js以來&#xff0c;它的綻放的絢麗讓我無法不對它喜歡。我覺得Js在不斷帶給我們驚喜&#xff1b;在開發過程中&#xff0c;會大大提升我們對原型開發的利用率&#xff0c;使用Js語言做游戲開發&#xff0c;使游戲…

Hammer.js移動端觸屏框架的使用

hammer.js是一個多點觸摸手勢庫&#xff0c;能夠為網頁加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多點觸摸事件&#xff0c;免去自己監聽底層touchstart、touchmove、touchend事件并且寫一大堆判斷邏輯的痛苦。hammer.js不但支持觸摸屏設備的瀏覽器&#xff0c;在桌面瀏…

Android實現筆記本修改功能,安卓12第二個開發者預覽版推出:UI、功能有所改進...

最近谷歌正式推出了Android 12的第二個開發者預覽版&#xff0c;帶來了很多UI和功能上的改進。首先最明顯的變化應該是鎖屏界面和下拉通知欄的音樂播放器。此前這部分UI的配色一直采用的是音樂專輯的主色調&#xff0c;但在Android 12上&#xff0c;這個配色變成了系統的強調色…

Delphi編譯報錯對照表

; not allowed before ‘ELSE’ → ElSE前不允許有“;” ” clause not allowed in OLE automation section → 在OLE自動區段不允許“”子句 ” is not a type identifier → 不是類型標識符 ” not previously declared as a PROPERTY → 前面沒有說明PROPERTY ‘GOTO ‘ lea…

C語言中Union類型的使用方法

轉自&#xff1a;http://blog.csdn.net/feimor/article/details/6858103 使用C語言時&#xff0c;常常使用struct&#xff0c;對于union類型卻幾乎沒有用過&#xff0c;只知道它是聯合類型&#xff0c;各字段共享一塊內存&#xff0c;實際應用中卻不知道它的具體用途。 今天讀《…