1. 程式人生 > >寒假 15(前n個數的隨機置換的兩個算法)(隨機數產生)

寒假 15(前n個數的隨機置換的兩個算法)(隨機數產生)

語言 技術支持 分布函數 命名 大量 連續 決定 use 模型

具體實現過程見substitution of int from 1 to n

隨機數算法知識:

kitty的隨機數算法博客;

蒙特卡洛法:統計實驗法,大量模擬求概率,用於不可解析函數,或概率分布,的模擬與計算時

將所求解的問題同一定的概率模型相聯系,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解

蒙特卡羅方法解題過程的主要步驟:

a.針對實際問題建立一個簡單且便於實現的概率統計模型,使所求的量恰好是該模型的概率分布或數字特征。

b.對模型的隨機變量建立抽樣方法,在計算機上進行模擬測試,抽取足夠多的隨機數。

c.對模擬實驗結果進行統計分析,給出所求解的“估計”。

d.必要時,改進模型以提高估計精度和減少實驗費用,提高模擬效率。

需要隨機數產生技術支持,

隨機數產生方法:

0~1,乘同余和混合同余,和一種更復雜的——借助0~1分段,離散型隨機變量的模擬——連續型隨機變量的模擬,逆變換法,舍選法——

c語言中產生隨機數:rand函數,srand函數(利用time提供的值為rand設置種子),time函數

隨機變量的概率分布函數:

概率分布函數是概率論的基本概念之一。在實際問題中,常常要研究一個隨機變量ξ取值小於某一數值x的概率,這概率是x的函數,稱這種函數為隨機變量ξ的分布函數,簡稱分布函數,記作F(x),即F(x)=P(ξ<x) (-∞<x<+∞),由它並可以決定隨機變量落入任何範圍內的概率。

語言知識:

rand,srand,time組合使用產生符合不同要求的隨機數

used輔助數組,像bool值一樣,可以優化一些避免重復的對比過程

swap函數,傳遞指針,temp變量

數組文字

如果要使用5,可以直接用5,也可以把5賦給一個變量後使用變量

復合文字就相當於數據5,作為一個常量使用,任何可以使用數組常量的地方都可以使用數組文字,例如給函數傳遞一個數組參數時

初始化一個命名數組可以省略數組大小,編譯器會自動計算元素數目

初始化一個數組文字也可以省略數組大小

圓括號擴起來的類型名緊跟初始化列表,沒名稱不可引用,必須在創建的時候使用,值和相應類型的數組值相同,為一個地址

寒假 15(前n個數的隨機置換的兩個算法)(隨機數產生)