我的整数范围是1..10。我想根据x^2的分布选择一个。在指数分布上生成一个随机数的简单解释/示例
我想是这样的:
def random_from_exp(min, max, exponent):
...
我不熟悉的数学或统计数据,我不知道如何在以前的答案解释这个问题(lambda表达式,倒置和诸如此类的东西)上述问题的背景。请举例说明一下简单的解释。
我的整数范围是1..10。我想根据x^2的分布选择一个。在指数分布上生成一个随机数的简单解释/示例
我想是这样的:
def random_from_exp(min, max, exponent):
...
我不熟悉的数学或统计数据,我不知道如何在以前的答案解释这个问题(lambda表达式,倒置和诸如此类的东西)上述问题的背景。请举例说明一下简单的解释。
如果我是正确的,你要简单地生成一个数字,是对指数函数(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
谢谢!值的分配实际上被翻转了(所以'10'至少被选中)。尽管从max中减去该值似乎仍然有效。 – cyrus
@cyrus x均匀分布时x^2的分布实际上是1/2 1/sqrt(x)。无论如何,也许1 - x^2都适合你。上面的Nitish给出的链接告诉我们如何得到完全正确的分布,如果这很重要的话。 –
我想在这里展示的一点是,如果您能够生成您需要的值的范围,那么您可以将它提供给函数。在你想要生成一组具有正态分布的值的情况下,我相信scikit肯定会有一种方法来做到这一点。 –
“我想根据分布来选择一个X^2 “。我不太明白。你是否真的想根据x^2的分布生成数据?这通常不被称为指数分布。 – Nitish
也许这个不清楚。我想要的是基于x^2的xs的加权选择。所以5的权重为25; 10的权重为100.解决方案是在随机加权选择算法中生成这些权重吗? – cyrus
你所寻找的正是是这样的:http://stackoverflow.com/questions/11373192/generating-discrete-random-variables-with-specified-weights-using-scipy-or-numpy – Nitish