2016-11-20 46 views
0

我想寫需要我發生器產生一個隨機數的程序。隨機數更喜歡範圍

我還需要使它所以有一個變量機會挑選一組範圍。

在這種情況下,我會1-10之間產生,並與%的機會的範圍是7-10。

我該怎麼做?我可以提供一個公式或類似的東西嗎?

+1

你正在使用哪種編程語言? Python有隨機庫,你可以在你的問題的第一部分使用random.randint(1,10)。當你說「百分比機會的範圍是7-10」時,你是什麼意思? –

+0

你可以展示你到目前爲止嘗試過什麼嗎?你還用什麼語言? –

+0

你會說清楚嗎? –

回答

1

所以,如果我理解你的問題,你希望兩個號碼範圍,那一個範圍將被選擇的變量定義的概率。這可以在數學上描述爲概率密度函數(PDF),在這種情況下,它也將把「機會」變量作爲參數。如果,例如,您的7-10範圍更可能比1-10範圍的其餘部分,你的PDF可能看起來像:

Sample Probability Density Function

一個PDF如平面分佈可以轉化成另一個通過轉換函數,這將允許您生成一個統一的隨機數並將其轉換爲您自己的密度函數。看到這裏嚴格的數學: http://www.stat.cmu.edu/~shyun/probclass16/transformations.pdf

但是既然你正在編寫一個程序,而不是數學論文,我建議最簡單的方法是生成兩個隨機數。第一個決定使用哪個範圍,第二個決定你選擇的範圍內的數字。請記住,如果你的範圍重疊(1-10和7-10顯然做),那麼重疊區域將更加容易,所以你可能會想使你的範圍獨家這樣你就可以更容易控制的概率。你還沒有說你在用什麼語言,但是這裏有一個簡單的Python例子:

import random 

range_chance = 30 #30 percent change of the 7-10 range 

if random.uniform(0,100) < range_chance: 
    print(random.uniform(7,10)) 
else: 
    print(random.uniform(1,7)) #1-7 so that there is no overlapping region 
+0

我想我應該使range_chance變量大於50,因爲在你的例子中,範圍是「首選」。但你明白了。 –