Reports · 2026-09-18
Greedy beats random on 180 of 200 paired games
Baseline arena: effective win rate on 200 paired games
| Row | Value | Low | High | n |
|---|---|---|---|---|
| greedy vs random | 90.2 | 85.3 | 93.6 | 200 |
| random vs greedy | 9.8 | 6.4 | 14.7 | 200 |
| random vs random (first seat set) | 47 | 40.2 | 53.9 | 200 |
The paired contrast makes the same point per seed: greedy's score as Red plus its score as Blue minus one averaged 0.805 over the 100 seeds, with a 95% interval of 0.706 to 0.904; 86 seeds favoured greedy, 9 split and 5 went to random. In the self-match the contrast for the first random was -0.06 with an interval of -0.176 to 0.056.
What random play looks like under the training rules
Random against random drew 96 of 200 games at the 100-move battleless limit and averaged 569 plies; greedy against random averaged 219 plies and drew once. Greedy converts, so the draw concern in the approach page did not arise: its draw share was 0.5%, far below the quarter that would have triggered a conversion term.
90%180/200, 85% to 93%Greedy takes a microsecond per move and random less, so the whole experiment ran in a few milliseconds on 32 threads. The cost of the reference is negligible, which is the point of a floor.
Limits
This says nothing about play quality beyond the floor. Greedy's twenty losses are the random player stumbling onto a Flag with a Scout or greedy walking its Marshal into a Bomb it could not see; neither is an observation a stronger player would repeat. The next rung measures expectimax against this reference on the same seeds.
Reproduction
Registration experiments/9aa52df6-f9fe-47f5-beab-760ab04c2008.toml. Commands, from the repository root:
cd server && cargo run --release -p armies-arena --bin matchup -- --red greedy --blue random --games 200 --seed 0 --rules training --threads 32 --out ../research/runs/9aa52df6-f9fe-47f5-beab-760ab04c2008/greedy-vs-random.json
cd server && cargo run --release -p armies-arena --bin matchup -- --red random --blue random --games 200 --seed 0 --rules training --threads 32 --out ../research/runs/9aa52df6-f9fe-47f5-beab-760ab04c2008/random-vs-random.json
cd research && python3 scripts/paired_contrast.py runs/9aa52df6-f9fe-47f5-beab-760ab04c2008/greedy-vs-random.json
cd research && python3 scripts/build_experiment_assets.py--seed 0 --games 200 plays seeds 0 to 99 once from each seat. The
record carries the SHA-256 of both JSON outputs.