我是C++的新手,對缺乏可訪問的常見概率操縱工具(即Boost和標準庫中缺少的東西)感到非常驚訝。我用其他語言編寫了很多科學編程,但標準和/或無所不在的第三方附加組件始終包含一整套概率工具。一位朋友認爲Boost是C++的無處不在的附加組件,但是當我閱讀Boost文檔時,即使它看起來缺乏我認爲非常基本的內置插件。從C++中的離散概率分佈中抽樣
我無法找到一個內置的,它需要某種離散概率數組,併產生一個根據這些概率選擇的索引。我當然可以爲此編寫自己的函數,但我只是想檢查我是否缺少一個標準的方法來執行此操作。
不得不在低級別編寫我自己的函數是一件壞事,我覺得,但是我正在爲一個大型項目編寫一個全新的模擬模塊,這個模塊全部用C++編寫。我慣常的做法是用Python編寫並將Python鏈接到C++,但是由於其他人在完成後將不得不管理這些代碼,而且他們都不知道Python,我認爲它會以更加謹慎的態度將其交給C++的所有人。
更一般地說,人們在C++中做些什麼,比如從標準分佈抽樣,特別是像多變量正態分佈一樣基本的東西?
總是有http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html。如果你不想要一個更大的包,只需要自己寫10條線就可以從直方圖中抽樣。 – 2012-03-30 23:38:54
@honk我很欣賞這個鏈接。但是,我遇到了太多的科學計劃,努力編寫自己的基本統計函數。我認爲這會讓事情變得更糟。是的,制定統一標準並將其與累計概率進行比較很容易,但我認爲對於大多數項目來說,這是一個糟糕的主意,就像我很少信任選擇實施Cholesky分解的人的科學代碼一樣而不是使用LAPACK或他們自己的線性求解器。 – ely 2012-03-30 23:47:01