C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 場景: rand 生成隨機數
此函數生成均勻分布的偽隨機整數, 每個隨機數的范圍在 0 和一個系統相關的最大值( 至少為 32767) 之間。
1.1 問題:
- 一些應用需要隨機浮點數。
- 一些程序需要非均勻分布的數。
2. 解決方法:隨機數庫
隨機數庫的組成
- 隨機數引擎類( random-number engines)
生成隨機 unsigned 整數序列 - 隨機數分布類(random-number distribution)
使用引擎返回服從特定概率分布的隨機數
2.1 隨機數引擎和分布
隨機數引擎是函數對象類, 它們定義了一個調用運算符,該運算符不接受參數并返回一個隨機 unsigned 整數。 我們可以通過調用一個隨機數引擎對象來生成原始隨機數
default_random_engine e; // 生成隨機無符號數 for (size_ti = 0;i < 10; ++i)//e(T)"調用"對象來生成下一個隨機數cout << e() <<" ";輸出:
16807 282475249 1622650073 984943658 1144108930 470211272…2.2 隨機數引擎操作
| Engine e; | 默認構造函數;使用該引擎類型默認的種子 |
| Engine e(s); | 使用整型值s作為種子 |
| e.seed(s) | 使用種子s重置引擎的狀態 |
| e.min(),e.max() | 此引擎可生成的最小值和最大值 |
| Engine::result_type | 此引擎生成的unsigned整型類型 |
| e.discard(u) | 將引擎推進u步;u的類型為unsigned long long |
2.3 分布類型和引擎
隨機數發生器時, 是指分布對象和引擎對象的組合。
eg.為了得到在一個指定范圍內的數, 我們使用一個分布類型的對象
// 初始化分布類型 // 生成0到 9 之間(包含)均勻分布的隨機數 uniform_int_distribution<unsigned> u(0, 9); // 初始化引擎 default_random_engine e; // 隨機生成0-9的無符號整數 cout << u(e) << endl;輸出
0 1 7 4 5 2 0 6 6 92.4 分布類型的操作
| Dist d; | 默認夠贊函數;使d準備好被使用。其他構造函數依賴于Dist的類型;分布類型的構造函數是explicit的。 |
| d(e) | 用相同的e連續調用d的話,會根據d的分布式類型生成一個隨機數序列;e是一個隨機數引擎對象。 |
| d.min(),d.max() | 返回d(e)能生成的最小值和最大值。 |
| d.reset() | 重建d的狀態,是的隨后對d的使用不依賴于d已經生成的值。 |
總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha