機率與統計理論沒學好,這一次用C++來實現
PDF和CDF,實做果然比較有趣!
C所提供得亂數產生函式,所產生出來的亂數為uniform distribution,我直接拿來做pdf和cdf,一旦找出pdf,即可求出cdf。
bin和sample數越多,準確度越高!若sample小,bin小依然可見pdf的曲線,至於cdf則影響小。
04 |
compiler: Dev C++ 4.9.9.2 |
10 |
#define NR_SAMPLES 1000000 |
14 |
int pdf[NR_BIN]={};//PDF桶子 |
15 |
int cdf[NR_BIN]={};//CDF桶子 |
16 |
srand(time(NULL));//隨機亂數種子 |
17 |
double x;//uniform distribution |
20 |
x = rand() / (double)RAND_MAX;//RAND_MAX=32767 |
21 |
pdf[(int)(NR_BIN*x)]++; |
25 |
for(int j=0; j<=i; j++){ |
輸出結果:
PDF:
0 0.099913
1 0.100337
2 0.099838
3 0.099732
4 0.100106
5 0.099986
6 0.099889
7 0.100057
8 0.100026
9 0.100087
CDF:
0 0.099913
1 0.20025
2 0.300088
3 0.39982
4 0.499926
5 0.599912
6 0.699801
7 0.799858
8 0.899884
9 0.999971
請按任意鍵繼續 . . .
圖示如:
機率密度函數(Probability Density Function
累積分佈函數(Cumulative Distribution Function)
阅读(1624) | 评论(0) | 转发(0) |