首页 > 解决方案 > 如何在python中生成随机二次函数

问题描述

我正在尝试在 python 中创建一个二阶随机二次函数,每次都返回相同的结果。类似于以下内容:

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

标签: pythonrandom

解决方案


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

类实例非常适合:

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)

推荐阅读