コンテンツにスキップ

RandomPlayer

RandomPlayer

RandomPlayer(username: str = '')

Bases: Player

比較対象・ベースラインとして使う、合法手からランダムに選ぶだけのプレイヤー。

battle.decision_random(行動選択専用の乱数系列)を使って選ぶため、 Battle(seed=...) による再現性を壊さない。Player.battle_against() で 複数回対戦して統計比較する場合、既定の Player.choose_command()(常に 先頭のコマンドを選ぶ決定的挙動)では展開の分散が潰れてしまうため、 対戦相手やベースラインとしてこのクラスを使うとよい。選出も Player.choose_selection()(先頭から順に選出)の代わりにランダムに選ぶ。

ソースコード位置: src/jpoke/core/player.py
41
42
43
44
45
46
47
48
49
50
51
52
def __init__(self, username: str = ""):
    """Playerインスタンスを初期化する。

    Args:
        username: プレイヤー名(デフォルトは空文字列)
    """
    self.username = username

    self.team: list[Pokemon] = []
    self.n_finished_battles: int = 0
    self.n_won_battles: int = 0
    self.rating: float = 1500

choose_selection

choose_selection(battle: Battle) -> list[int]

選出可能な battle.n_selected 匹を battle.decision_random でランダムに選ぶ。

ソースコード位置: src/jpoke/players/random_player.py
23
24
25
def choose_selection(self, battle: Battle) -> list[int]:
    """選出可能な `battle.n_selected` 匹を `battle.decision_random` でランダムに選ぶ。"""
    return battle.decision_random.sample(range(len(self.team)), battle.n_selected)

choose_command

choose_command(battle: Battle) -> Command

利用可能なコマンドから battle.decision_random でランダムに1つ選ぶ。

ソースコード位置: src/jpoke/players/random_player.py
27
28
29
def choose_command(self, battle: Battle) -> Command:
    """利用可能なコマンドから `battle.decision_random` でランダムに1つ選ぶ。"""
    return battle.decision_random.choice(battle.available_commands(self))