让我说我想从线性分布函数中提取随机值,我不知道我会怎么做... 说我有一个函数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)
使用lambda或显式定义定义您的函数,然后调用它来获取y值:
def func(x):
return 3
points = []
for i in range(10):
x = random.uniform(0, 3)
points.append((x, func(x))
在这种情况下,斜率为0的线性函数相当简单。
编辑:我想我现在更清楚地理解这个问题了。您是否希望随机生成位于曲线下方的点?直接计算任意函数是非常棘手的,并且您可能希望绑定到您的函数(即< x< b)。假设我们有一个绑定,一个简单的方法是在包含曲线的框中生成一个随机数,如果它不在曲线下,则简单地丢弃它。这将是完全随机的。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),并且上限越小,将发生的采样丢失越少。