日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数

發布時間:2025/3/21 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 9

2.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 标准库特殊设施)随机数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。