1. 程式人生 > >使用C語言產生正太分佈的隨機數之問答篇

使用C語言產生正太分佈的隨機數之問答篇

[color=red][b]此回覆於2008-06-09 09:38被 [url=http://bbs.51cto.com/profile-uid-24207.html]ribut9225[/url] 評為最佳答案[/b][/color]

看了一下,的確是錯了,要加12個的
x=u1+u2+u3+u4+u5+u6+u7+u8+u9+u10+u11+u12-6

如果公式正確,那麼剩下的主要問題就是產生隨機數了
在C裡邊產生隨機數的方法是用srand()設定隨機種子,然後用rand()獲取偽隨機數
因為是偽隨機數,所以評審導師會在這裡卡你一下的,這部分由我們C專長的版主yangcs幫忙解答一下
還有一個問題就是均勻分佈,導師也會提問
偽隨機數在每個可能出現的機會都是均等的,這部分還得要版主yangcs解答一下了

#include

double p;

srand(time(0));/*種下隨機種子,只種一次,在程式開始的時候用一下*/

p=(double)rand()/(double)RAND_MAX;/*得到的p就是在[0,1]區間均勻的隨機數*/

兩個double的強制轉換是為防止某些編譯器優化出錯的
RAND_MAX在STDLIB標頭檔案有定義,是編譯器int表示的最大值
剩下的就是按公式做出要做的東西了
最後說明一下,一般C裡邊rand()函式產生的隨機數是偽隨機數,雖然看起來是是沒規律,但還是假的
真正要產生隨機數的話是用專門的電子電路,不過價格好像不低。