【问题标题】:random values from specific function python来自特定函数python的随机值
【发布时间】:2014-09-04 21:37:04
【问题描述】:

假设我想从线性分布函数中提取随机值,但我不知道该怎么做.. 假设我有一个函数 y = 3x 那么我希望能够从该行中提取一个随机值。 这是我尝试过的:

 x,y = [],[]
 for i in range(10):
    a = random.uniform(0,3)
    x.append(a)
    b = 3*a
    y.append(b) 

这给了我从这个线性函数中获取的 y 值(每个说的分布)。现在,如果这是正确的,我将如何对看起来像水平线的分布做同样的事情?

如果我有一个水平线函数 y = 3,我怎样才能从那里提取随机值?

【问题讨论】:

  • 您需要更好地了解发行版是为了解决您的问题,因为您拥有的不是发行版。
  • 累积分布函数确实是这样定义的。不知道你对我的问题有没有清楚的了解亲爱的同志。
  • 累积分布函数的值必须在[0, 1] 范围内。 y = 3x 不符合该标准。
  • 累积分布定义为 F(x) = x for x in [0,1]。添加比例因子 3 不会对分布函数的伪随机性质造成任何损害。只会改变限制。没什么大不了。 itl.nist.gov/div898/handbook/eda/section3/eda3662.htm
  • 承认你有一个观点:)

标签: python function random


【解决方案1】:

只需使用 lambda 或显式定义定义您的函数,然后调用它来获取 y 值:

def func(x):
    return 3

points = []
for i in range(10):
    x = random.uniform(0, 3)
    points.append((x, func(x))

在这种情况下,斜率为 0 的线性函数相当简单。

编辑:我想我现在更清楚地理解了这个问题。您正在寻找随机生成位于曲线下方的点吗?直接计算任意函数是相当棘手的,您可能希望绑定到您的函数(即 a

def linearfunc(x):
    return 3 * x

def getRandom(func, maxi, a, b):
    while True:
        x = random.uniform(a, b)
        y = random.uniform(0, maxi)
        if y < func(x):
            return (x, y)

points = [getRandom(linearFunc, 9, 0, 3) for i in range(10)]

这种方法需要知道函数在指定区间上的上界(maxi),上界越紧,采样失误的发生就越少。

【讨论】:

  • 但是数组points中的值不是和x一样吗?只是一组介于 0 和 3 之间的随机统一值。如何确保它来自函数?
  • 我想要的输出只是一个具有单个元素值的数组,是上述函数的解决方案。
  • 类似于 numpy.random.normal(mu,sigma,size) 给出从指定正态分布获取的指定大小的单个元素值数组,我希望获得类似于这个。
  • 我回复了,但我不能 100% 确定我完全理解您在寻找什么。如果不是这样,请告诉我
  • 所以是的,我确实指定了 0 到 3 的界限。我认为您的更新解决方案正在进行中。我在这里改写了这个问题以更好地解释它。我不想要曲线下的值,我想要曲线下的随机值,或者在这种情况下来自 LINE 的随机值。非常感谢您的帮助! :) stackoverflow.com/questions/27209244/…
猜你喜欢
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2022-01-07
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多