Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自特定函数python的随机值_Python_Function_Random - Fatal编程技术网

来自特定函数python的随机值

来自特定函数python的随机值,python,function,random,Python,Function,Random,假设我想从线性分布函数中提取随机值,我不知道该怎么做。。 假设我有一个函数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=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,我怎么能从那里得到随机值呢

只需使用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)]
def linearfunc(x):
返回3*x
def getRandom(函数、最大值、a、b):
尽管如此:
x=随机均匀(a,b)
y=随机均匀(0,最大值)
如果y

此方法要求在指定的时间间隔内知道函数的上限(maxi),并且上限越紧,发生的采样未命中就越少。

但是数组点中的值不是与x相同吗?只是一组0到3之间的随机均匀值。我如何确保它来自函数?我想要的输出只是一个数组,其中包含单元素值,这些值是上述函数的解决方案。类似于numpy.random.normal(mu,sigma,size)给出指定大小的单元素值数组,这些值是从指定的正态分布中获取的,我希望得到与此类似的价值观。我回答了,但我不能100%确定我完全理解你在寻找什么。如果不是,请告诉我。是的,我确实指定了0到3的界限。我认为你的最新解决方案正在进行中。为了更好地解释这个问题,我在这里重新表述了这个问题。我不想要曲线下的值,我想要曲线上的随机值,在这种情况下是直线上的随机值。非常感谢您的帮助!!:)你需要更好地理解什么是分布来解决你的问题,因为你拥有的不是分布。累积分布函数确实是这样定义的。亲爱的同志,我不确定您是否清楚地理解了我的问题。累积分布函数的值必须在
[0,1]
范围内
y=3x
不符合该标准。累积分布定义为[0,1]中x的F(x)=x。添加比例因子3不会对分布函数的伪随机性质造成任何损害。只会改变限制。没什么大不了的。一定要承认你的观点:)