假设有一个rand8
函数返回一个介于[0-7]之间的随机数。现在,我想根据从rand8
得到的输入生成一个函数,即rand11
。像这样:
Input from rand8 : 1, 3 , 5 , 7 , 0 , 7 , 2 , 1 , 6 , ...
Output given by rand11: 0, 5 , 10 , 7 , 6 , 0 , 2 , 9 , 8 , ...
到目前为止,我在网上发现:
def lcg(modulus, a, c, seed):
while True:
seed = (a * seed + c) % modulus
yield seed
a = lcg(5, 0, 8, 1)
next(a)
但我不太熟悉如何修改函数以得到0到7之间的数字,并返回0到10之间的数字。请注意,我不需要实现rand8
函数。我只需要处理rand11
函数?请记住,我不允许使用python中的random
库或任何其他像numpy.random()
这样的随机库
有人能帮我吗?你知道吗
这将给出您所期望的输出的列表。如您所见,如果您运行这个程序,它会给出0到10之间的值的均匀分布。随机库仅用于生成较大的
rand8
种子列表。你知道吗如果希望函数每次运行时都有不同的结果,可以添加一个乘数。未显示均匀分布的最终代码:
相关问题 更多 >
编程相关推荐