是否有多个随机种子和序列

时间:2018-11-29 05:30:51

标签: python random python-3.4 micropython

我想用micropython制作一个实现python 3.4的游戏。我希望我的怪物受到随机数发生器的控制。我正在考虑将当前的网格参考作为种子和今天的日期传递,因此该怪物将始终在今天出现。明天玩游戏,会有新的怪物。

问题是我需要对骰子和其他真正随机的事件使用random.randintrandom.randchoice

如果我在c中执行此操作,我将使用erand48中的<stdlib.h>并保留并维护多个种子。

我在python中有什么解决方案?

我可能需要一个混沌功能来控制怪物。几年前,一位数学教授给了我一个,但是它很简单,并且由于浮点舍入而趋向于0.0

3 个答案:

答案 0 :(得分:1)

您可以使用python的random模块为每个独立组件创建随机对象。示例:

monster_x = monster_locations.randInt(0,10)
trap_type = traps.randInt(0,4)

这些随机对象各自具有各自独立的种子,可以像常规随机类一样被调用:

import java.awt.image.BufferedImage;
import java.io.File;

public class SystemIconMac {
    public static BufferedImage getIconImage(File file, int size) {
        return  ch.randelshofer.quaqua.osx.OSXFile.getIconImage(file, size);
    }
}

答案 1 :(得分:0)

The docs of random module提及

  

此模块提供的功能实际上是random.Random类的隐藏实例的绑定方法。您可以实例化自己的Random实例,以获取不共享状态的生成器。

答案 2 :(得分:0)

似乎只有 个随机种子。 您使用getstatesetstate保存和恢复以前的随机位置。

import random

random.seed(1)
for _ in range(5):
    print(random.randrange(10), end = ' ')
print('')

save = random.getstate()

random.seed(1)
for _ in range(10):
    print(random.randrange(10), end = ' ')
print('')


random.setstate(save)
for _ in range(5):
    print(random.randrange(10), end = ' ')
print('')

产生以下输出

2 9 1 4 1 
2 9 1 4 1 7 7 7 6 3 
7 7 7 6 3 
相关问题