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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数发生器种子( seed)

發布時間:2025/3/21 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数发生器种子( seed) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 定義

種子就是一個數值,引擎可以利用它從序列中一個新位置重新開始生成隨機數。支持每次運行程序都會生成不同的隨機結果。

  • 種子可以使用系統函數time(0)。
  • 其他隨機數分布

eg.

default_random_engine e1; // 使用默認種子 default_random_engine e2(2147483646); // 使用給定的種子值 // e3 和 e4 將會生成相同的序列,因為他們使用了相同的種子 default_random_engine e3; e3.seed(32767); //調用 seed 設置為一個新種子值 default_random_engine e4(32767); //將種子值設置為 32767 for(size_t i = 0;i != 10; i++) {if (e1() == e2())cout<<"unseeded match at iteeration: "<< i <<endl;if (e3() != e4())cout<<"seeded differs at itertion: "<< i <<endl; }

1.1 一個好的種子

調用系統函數 time(返回從一個特定時刻到當前經過了多少秒)

eg. default_random_engine el (time (0) ); / / 稍微隨機些的種子

1.2 其他隨機數分布

精度不夠:最常用但不正確的從 rand 獲得一個隨機浮點數的方法是用 rand ( )的結果除以RAND_MAX

uniform_real_distribution 類型的對象

default_random_engine e; // 生成無符號隨機整數 // 0 到 1 (包含)的均勻分布 uniform_real_distribution<double >u(0,1); for(size_t i =0;i<10;i++)cout<<u(e)<<" "; cout<<endl;

1.3 使用分布的默認結果類型

當我們希望使用默認隨機數類型時要記得在模板名之后使用空尖括號

eg.

// 空<>表示我們希望使用默認結果類型 uniform_real_distribution<> u (0,1); //默認生成 double 值

1.4 生成非均勻分布的隨機數

C++ 11 還規定了可以生成 20 種不同的分布類型

eg. 均勻分布uniform,正態分布normal,二項分布binomial,泊松分布poisson,學生分布 student

std::default_random_engine e; //引擎 std::normal_distribution<double> n(4, 1.5); //均值4, 方差1.5 std::vector<unsigned> vals(9); for(std::size_t i=0; i != 200; ++i) { unsigned v = std::lround(n(e)); //取整-最近的整數 if (v < vals.size()) ++vals[v]; } for (std::size_t j=0; j != vals.size(); ++j) std::cout << j << " : " << vals[j] << std::string(vals[j], '*') << std::endl;

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)随机数发生器种子( seed)的全部內容,希望文章能夠幫你解決所遇到的問題。

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