2014-03-18 71 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肯定会有一种方法来做到这一点。 –