C++中三种产生随机数的方法
生活随笔
收集整理的這篇文章主要介紹了
C++中三种产生随机数的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一種方法:使用時間做為生成隨機數的種子
#include <iostream>using namespace std;// randomly generate 0 or 1 int main() {srand((unsigned)time(0));for(int i = 0; i < 10; i++){cout << rand() % 2 << "";}cout << endl << endl;return 0; }第二種方法:使用C++提供的生成隨機數的庫函數
#include <iostream> #include <random>using namespace std;// randomly generate 0 or 1 int main() {default_random_engine e(time(0));uniform_int_distribution<unsigned>u(0,1);for(int i = 0; i < 10; i++){cout << u(e) << "";}cout << endl << endl;return 0; }第三種方法參考Simple Random Number Generation
private static uint GetUint() {m_z = 36969 * (m_z & 65535) + (m_z >> 16);m_w = 18000 * (m_w & 65535) + (m_w >> 16);return (m_z << 16) + m_w; }public static double GetUniform() {// 0 <= u < 2^32uint u = GetUint();// The magic number below is 1/(2^32 + 2).// The result is strictly between 0 and 1.return (u + 1.0) * 2.328306435454494e-10; }m_z、m_w僅被初始化一次,GetUint函數返回無符號整數的隨機數序列,GetUniform返回在(0,1)之間的隨機浮點數,這個方法相比于以上兩種方法的好處是上述兩種方法,在不同的時刻產生的隨機數序列不同,結果不可復現,而第三種方法產生的隨機數序列始終相同,任意時刻運行程序的結果相同
注意事項:使用上述三種方法生成隨機數序列時,種子只初始化一次,若重復初始化操作,則可能導致多次生成的隨機數序列相同
總結
以上是生活随笔為你收集整理的C++中三种产生随机数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ollydbg的断点设置
- 下一篇: 中台核心秘密:建设过程中的组织架构