首页 > 解决方案 > 如何为每个对象获取新的 Python 模块随机种子实例

问题描述

嗨,我正在创建用于解决蛇游戏的遗传算法。我有Game课,它已经实现了所有的蛇游戏逻辑。我用它来评估每个Snake人。

我正在为游戏中的蛇生成随机零食。但是我需要一种方法来为每个新Game实例生成相同的随机零食位置,因此种群中的每条蛇都将在相同的环境中进行评估。

class Game:
    def __init__(self, width, height, phenotype, seed, game_representation_strategy,
             snake_length=5, snack_eaten_points=1, moved_toward_snack_points=0.1,
             moved_away_from_snack_points=-0.2):
        self.width = width
        self.height = height
        self.phenotype = phenotype
        self.seed = seed
        self.game_representation_strategy = game_representation_strategy
        self.snack_perspective = None
        self.snack_eaten_points = snack_eaten_points
        self.moved_toward_snack_points = moved_toward_snack_points
        self.moved_away_from_snack_points = moved_away_from_snack_points

        self.status = GameStatus.INITIALIZED
        self.snack = None
        self.snake = []
        self.score = 0
        self.direction = Direction.LEFT
        self.last_snack_distance = 0

        self.initialize_snake(snake_length)
        self.initialize_snack()
        self.initialize_last_snack_distance()

标签: python-3.xrandom

解决方案


你可以

from random import Random

rng = Random(your_seed_here)

random然后从该实例上的模块调用普通函数。

num = rng.randint(0, 100)

推荐阅读