如何在python中生成随机二次函数

问题描述 投票:0回答:2

我试图在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分配一个新的随机数?

python random
2个回答
3
投票

您只需将系数随机化一次,然后将它们保存在某处并重复用于以下相同函数的计算。

类实例是理想的:

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)

1
投票

做第二种方法,但只是将它放入一个函数中。 :)

>>> 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
>>>
© www.soinside.com 2019 - 2024. All rights reserved.