C++中產生概率分布之-均勻分布和標准正態分布


  最近閑來無事,發現做一個咸魚就是好,想做什么做什么。可能碼農做久了,還是無法擺脫技術的思維。接了個小活,其中涉及到需要用到C++實現概率分布--0-1均勻分布和標准正態分布,雖然很簡單,還是記下來,以備后用。

  均勻分布:

    在不設置種子的情況下,rand()函數可以產生偽隨機序列,但是區間不是我們想要的,因此需要簡單的轉換一下。

    產生0-1之間(保留4位小數)均勻分布:

      rand()%10000/10000.0:這個產生的概率分布范圍[0.0000, 0.9999]

    同理,產生a-b之間的均勻分布:

      rand()%(b-a+1) +a

  標准正態分布:

    該分布在C++11中已經提供,代碼如下:

    

  #include<chrono>
  #include<ctime>
    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
    std::default_random_engine generator(seed);
    // 第一個參數為高斯分布的平均值,第二個參數為標准差
    std::normal_distribution<double> distribution(0.0, 1.0);    
   // p為概率,服從N~(0,1)標准正態分布
    double p = distribution(generator);

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM