在Python中,如何在一个范围内生成跟随函数输出的随机数据集?

时间:2018-02-19 23:05:47

标签: python-3.x

例如,这可以根据函数timestwo(x)返回N个数据点,但是无法将整个mymin用于mymax范围,因为random.random()返回介于0.0和1.0之间的浮点数。有什么建议吗?

def GenerateDataFromFunction(N,mymin,mymax,myfunc):
    out = []

    while len(out) < N:
        inputvar = myfunc(random.random())
        if inputvar > mymin and inputvar < mymax:
            out.append(inputvar) 
    return out

def timestwo(x):
    return 2*x

GenerateDataFromFunction(10,0,15,timestwo)

2 个答案:

答案 0 :(得分:1)

如果您只想在myminmymax之间使用随机数,则可以使用random.randrange(mymin, mymax)。这只会限制输入而不是输出。它无法始终返回范围内的输出,因为这需要深入了解myfunc的实现方式。例如,你的min和max可能分别为0和1,函数总是返回-1,因此无论你将什么参数作为输入传递,它都不会产生正确的输出。 E.g:

def myFunc(arg1):
    return -1

GenerateDataFromFunction(10, 0, 1, myFunc)  # This never returns

答案 1 :(得分:0)

最简单的解决方案是沿函数生成一个离散值列表,然后使用random.choice()