来自特定函数python的随机值

2024-04-23 10:17:00 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我想从线性分布函数中提取随机值,我不知道该怎么做。。 假设我有一个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,我怎么能从那里得到随机值呢?你知道吗


Tags: 函数inforrange线性randomuniform直线
1条回答
网友
1楼 · 发布于 2024-04-23 10:17:00

只需使用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<;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),并且上限越紧,发生的采样未命中就越少。你知道吗

相关问题 更多 >