我遇到了問題。我必須在Python中實現一個需要隨機數X的算法,如Pr [X≥k] = 1/k。我不知道是否已經存在一個分配,可以給我這個確切的值,或者如果有一種方法來實現這個隨機生成器使用簡單的隨機Python庫。有沒有辦法做到這一點?預先感謝您的幫助!以下某個分配的隨機數
回答
最簡單的企圖是讓
X = 1.0/random.random()
然而,random.random()
可以有一個零值,因此這可能導致除以零錯誤。該值不能爲1.0,根據文檔,所以使用
X = 1.0/(1.0 - random.random())
對於該分佈,
鐠[X≥K] = PR [0 < 1/X≤1/K]
= PR [0 < 1 - random.random()≤1/K]
= PR [1 - 1/K≤random.random()< 1]
= 1 - (1 - 1/k){自從跑了DOM()是在[0,1均勻)和[1-1/K,1)是一個子區間}
= 1/K
(我希望能在這裏使用MathJax!)當然,所有這些都假定k≥1,因爲否則你的條件就沒有意義了。我還假定X是一個連續的隨機變量,從1到正無窮大。如果X是一個正整數(因此k也是一個正整數),那麼就拿出我給出的公式的底線。
是的,這就是我需要的!非常感謝你! – Marco
你需要的是一個統一的隨機數發生器來產生隨機數。 然後,這些數字可被轉化爲一個分佈(例如乘法)
https://docs.python.org/2/library/random.html
https://docs.python.org/3.5/library/random.html
這些可以產生隨機數。 我沒有得到的是你的分配。圖形看起來如何?如果你有一個代表它的函數,用它和隨機數相乘。
Rory結束了正確的答案,但他的數學證明它並不具有建設性—它沒有顯示如何得到答案,它只表明他的斷言是正確的。以下使用基本的概率規則來推導答案。
Pr{X ≥ k} = 1 - Pr{X < k}
如果X
是連續隨機變量,
Pr{X < k} = Pr{X ≤ k}
右手側是累積分佈函數F X(k)的定義,因此
Pr{X ≥ k} = 1 - F(k) = 1/k
F(k) = 1 - 1/k
然後by the inversion theorem我們可以設置等於U
,一個統一的(0,1)RV,並解決k:
U = 1 - 1/k
1 - U = 1/k
k = 1/(1 - U)
使用你的隨機數發生器爲U,你就完成了。正如Rory指出的那樣,這隻對k≥1有效,否則會導致CDF超出界限。
我看不清楚我的數學錯了。我承認這很簡短,只顯示了一步,但那是因爲我認爲其餘的對於那些知道概率的人來說是顯而易見的。你激勵我爲我的平等添加更多步驟,但沒有任何改變。你是否同意我目前的論述是正確的? (當然,我仍然遺漏了一些細節 - 我不想迂腐) –
@RoryDaulton你的第二行是以你對X應該是什麼的斷言爲前提的,它並不遵循任何基本規則可能性。數學從那裏出現,因爲你的斷言恰好是真實的,但是這並不能使斷言事先有效。相比之下,我的推導遵循衆所周知的概率規則,最終導致您聲稱的結果。 – pjs
顯然,你的意思是你從期望的目標中得出表達式,而我表明我的表達滿足目標。我們的工作方向相反,但這並不能使我的數學「無效」。有關這兩種方法之間的區別的詳細討論,請參閱喬治波利亞的*如何解決它*。 –
- 1. 隨機「搖動」一個數組來分配新的隨機點
- 2. 隨機分配數據
- 3. 按組分配隨機數
- 4. 分配隨機數字c#
- 5. 分配隨機數變量
- 6. 如何生成隨機數並隨機分配給某些按鈕?
- 7. 爲某些滿足某些條件的對象分配一個隨機置換
- 8. 分配隨機background.color對象隨機ID
- 9. 隨機分配的精靈
- 10. 隨機分配的按鈕
- 11. Beta分配的隨機數發生器
- 12. 隨機分配百分比,以每個詞
- 13. 分配隨機數到對象數組
- 14. 用C#隨機數匹配一個經典的ASP隨機數
- 15. 隨機數生成並隨機分配到3個數字在php中
- 16. 生成隨機數直到某個
- 17. 並行隨機分配
- 18. 隨機分配給boost :: ptr_vector
- 19. 非隨機加權分配
- 20. Python,隨機整數和顏色分配
- 21. Java二維數組隨機分配
- 22. DOM - 分配隨機數來操作
- 23. 是否可以在Linux下分配某個扇區的內存?
- 24. 分配值,以隨機的記錄基於給定分佈
- 25. Android - 以某種概率選擇五個隨機數
- 26. 如何爲一個變量分配一個隨機數?
- 27. 使用隨機分配機會
- 28. 如何分配一個沒有重疊的隨機整數?
- 29. 將值分配給javascript中的多個隨機數
- 30. 我該如何隨機刪除文件行的某個部分?
不完全確定你要做什麼 – wjk2a1
嗨!我試圖產生一個隨機數X,它跟隨我描述的分佈。問題要求是根據分配選擇X Pr X≥k = 1/k – Marco
是您正在查找的內容:http://stackoverflow.com/a/4266312/2348704 – oat