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

时间:2018-09-07 03:19:28

标签: python random

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

 $interests_val = $_POST['interests_val'];

  $contact = array(
    "email"                           => $user_info->user_email,
    "tags[0]"                         => "[Interest] ".$interests_val[0]),
    "tags[1]"                         => "[Interest] ".$interests_val[1]),
    "tags[2]"                         => "[Interest] ".$interests_val[2]),

  );

这里的问题是两个不同的时间调用x(5)将有2个可能不同的结果。是否有可能每次生成具有相同结果的函数,还是我应该做类似的事情?

funk = lambda i : random.randint(0,10)*i**2 + random.randint(0,10)*i + random.randint(0,10)

每次我运行全局变量m2,m1和b时都为其分配一个新的随机数吗?

2 个答案:

答案 0 :(得分: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 :(得分: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
>>>