使用0 1分布構建均勻分布

2021-08-17 16:19:05 字數 713 閱讀 1985

1.有乙個隨機數發生器,能以概率p生成0,以概率1-p生成1,問如何做乙個隨機數發生器 

使得生成0和1的概率相等。 

2.用上面那個生成0和1的概率相等的隨機數發生器,怎樣做乙個隨機數發生器使得它生成 

的數在1…n之間均勻分布。 

第一題比較簡單,可以用原發生器周期性地產生2個數,直到生成01或者10。 

由於生成01和10的概率均為p(1-p),故預先任意指定01為0(或1),10為1(或0)即可。即可等概率的產生0和1,但然,要考慮其他組合的不可用性,獲取題目本身就隱含了這個bug或是缺陷吧。 

[cpp]view plain

copy

print?

int rand()  

第二題,需要一些思考……想到位運算,因為i個二進位制位隨機的選擇0或1,可以隨機的構成0~2^i的數,而這些數構成了所有的組合數。因此是等概率出現的。比如:2位二進位制位,這兩位可以隨機為0或1而互不影響,隨機的構成了00 01 10 11,它們代表了四個數,且這四個數是等概率的。 

[cpp]view plain

copy

print?

int newrand()  

if(result > n)  

return newrand();  

return result;  

}  

均勻分布對映到任意分布

當我們想對某些特定的分布進行抽樣時,由於電腦演算法只能產生服從於均勻分布的偽隨機數,我們可以通過對映的方式來獲取特定分布的抽樣。於是引出下面的問題 假設隨機變數 x sim u 0,1 對於已知對映 y g x 我們知道如何計算 y 的概率密度函式。但是,如果我們已知的是 y 的概率密度函式 d y...

均勻分布U a,b 均值和方差

驗證u a,b 的均值是 a b 2 2020 2 23 驗證u a,b 的均值是不是 a b 2 from random import uniform n int input please enter the number of test 試驗的次數 越多越趨於真實值 a float input ...

C C 中均勻分布和Possion

泊松分布適合於描述單位時間內隨機事件發生的次數的概率分布。如某一服務設施在一定時間內受到的服務請求的次數,交換機接到呼叫的次數 汽車站台的候客人數 機器出現的故障數 自然災害發生的次數 dna序列的變異數 放射性原子核的衰變量等等。泊松分布的概率質量函式為 在產生泊松分布時,首先需要產生均勻分布,下...