例如,这可以根据函数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)
答案 0 :(得分:1)
如果您只想在mymin
和mymax
之间使用随机数,则可以使用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()
。