2014-03-18 53 views
0

我的整數範圍是1..10。我想根據x^2的分佈選擇一個。在指數分佈上生成一個隨機數的簡單解釋/示例

我想是這樣的:

def random_from_exp(min, max, exponent): 
    ... 

我不熟悉的數學或統計數據,我不知道如何在以前的答案解釋這個問題(lambda表達式,倒置和諸如此類的東西)上述問題的背景。請舉例說明一下簡單的解釋。

+0

「我想根據分佈來選擇一個X^2 「。我不太明白。你是否真的想根據x^2的分佈生成數據?這通常不被稱爲指數分佈。 – Nitish

+0

也許這個不清楚。我想要的是基於x^2的xs的加權選擇。所以5的權重爲25; 10的權重爲100.解決方案是在隨機加權選擇算法中生成這些權重嗎? – cyrus

+1

你所尋找的正是是這樣的:http://stackoverflow.com/questions/11373192/generating-discrete-random-variables-with-specified-weights-using-scipy-or-numpy – Nitish

回答

1

如果我是正確的,你要簡單地生成一個數字,是對指數函數(X^2),並於10 0之間?

這很簡單。獲取從0到10的平方根的隨機數並對其進行平方。

import random 
import math 

print random.uniform(0, math.sqrt(10))**2 

或者你的情況:

# I have no idea what the exp means. I'm assuming it means exponent. 
def random_from_exp(min, max, exp): 
    return random.uniform(min, math.sqrt(max))**exp 

這將打印(分鐘< = RESULT < =最大值)^ EXP

+0

謝謝!值的分配實際上被翻轉了(所以'10'至少被選中)。儘管從max中減去該值似乎仍然有效。 – cyrus

+0

@cyrus x均勻分佈時x^2的分佈實際上是1/2 1/sqrt(x)。無論如何,也許1 - x^2都適合你。上面的Nitish給出的鏈接告訴我們如何得到完全正確的分佈,如果這很重要的話。 –

+0

我想在這裏展示的一點是,如果您能夠生成您需要的值的範圍,那麼您可以將它提供給函數。在你想要生成一組具有正態分佈的值的情況下,我相信scikit肯定會有一種方法來做到這一點。 –