我试图在python中创建一个随机二次函数到2度,每次返回相同的结果。有点像:
funk = lambda i : random.randint(0,10)*i**2 + random.randint(0,10)*i + random.randint(0,10)
这里的问题是调用x(5)两次不同的时间将有2个可能不同的结果。是否有可能生成每次都具有相同结果的函数,或者我应该执行以下操作:
m2 = random.randint(0,9)
m1 = random.randint(0,9)
b = random.randint(0,9)
funk = lambda i : m2*i**2 + m1*i + b
并在每次运行时为全局m2,m1和b分配一个新的随机数?
您只需将系数随机化一次,然后将它们保存在某处并重复用于以下相同函数的计算。
类实例是理想的:
class RandomQuadratic:
def __init__(self):
self.a = random.randint(0,10)
self.b = random.randint(0,10)
self.c = random.randint(0,10)
def __call__(self,x):
return self.a*x**2+self.b*x+self.c
f = RandomQuadratic()
f(5)
f(5)
做第二种方法,但只是将它放入一个函数中。 :)
>>> import random
>>> def random_quadratic():
... m2 = random.randint(0,9)
... m1 = random.randint(0,9)
... b = random.randint(0,9)
... funk = lambda i : m2*i**2 + m1*i + b
... return funk
...
>>> foo = random_quadratic()
>>> foo(1)
25
>>> foo(1)
25
>>> foo(1)
25
>>> foo(2)
55
>>> foo(2)
55
>>> foo(2)
55
>>> foo(3)
99
>>> foo(3)
99
>>> foo(3)
99
>>>