可能重複:
Converting a Uniform Distribution to a Normal Distribution在C中生成正態分佈隨機值的算法?
你好。
我想知道任何在C中實現的算法,它可以取0到1之間的一個隨機值,平均值和標準偏差,然後返回一個正態分佈的結果。
我現在沒有足夠的智力來解決這個問題。
我在互聯網上找不到任何有用的東西。
謝謝。
可能重複:
Converting a Uniform Distribution to a Normal Distribution在C中生成正態分佈隨機值的算法?
你好。
我想知道任何在C中實現的算法,它可以取0到1之間的一個隨機值,平均值和標準偏差,然後返回一個正態分佈的結果。
我現在沒有足夠的智力來解決這個問題。
我在互聯網上找不到任何有用的東西。
謝謝。
已經有Box Muller的建議,但一個計算上更簡單的方法就是利用central-limit theorem;將足夠多的獨立隨機變量加在一起,結果接近正態分佈。
Box-Muller是您需要的轉換。
謝謝你的答案,但我需要一個C實現或可讀的僞代碼,而不是一個難以理解的維基百科頁面。 – 2010-10-09 19:15:44
我並不想在那裏無禮,我只需要一些我可以理解並立即使用的東西。不過,我正在爲該算法尋找一個體面的網站,所以感謝您的建議。 – 2010-10-09 19:18:20
謝謝你的答案。這是否足夠有效,因爲需要很多隨機數字?顯然需要32個才能獲得足夠好的表示。 – 2010-10-09 19:22:12
@Matthew Mitchell:無法確切地回答這個問題,不知道你的平臺或你的準確性要求。你最好的選擇可能是實現這兩種方法和配置文件。我只能說Box-Muller變換需要對log,cos和sqrt進行評估,這可能很昂貴。 – 2010-10-09 19:41:31
這隻適用於AI,並不一定100%準確。由於功能只會很少需要,我認爲速度並不重要。 – 2010-10-09 19:44:00