Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3 -OO
- import random
- import math
- def sample(ex,hp):
- greens, reds = 15, 15 # start w/ 15 tanks each
- rHP = [hp] * reds
- gHP = [hp] * greens
- while greens > 0 and reds > 0:
- green_power, red_power = greens**ex, reds**ex # Lanchester’s Square Law
- prob_red_gets_hit = green_power / (green_power + red_power)
- rand = random.random()
- if rand < prob_red_gets_hit:
- hit_tank = math.floor(random.random() * reds)
- rHP[hit_tank] -= 1
- if rHP[hit_tank] == 0:
- del rHP[hit_tank]
- reds -= 1
- else:
- hit_tank = math.floor(random.random() * greens)
- gHP[hit_tank] -= 1
- if gHP[hit_tank] == 0:
- del gHP[hit_tank]
- greens -= 1
- return reds - greens
- for e in range (0,13):
- for hp in range (1,6):
- ex = e * 0.25
- histogram = [0] * 16
- for sample_count in range(0,1000000):
- victory_margin = abs(sample(ex,hp))
- histogram[victory_margin] += 1
- print(ex, ",", hp, ",", histogram[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement