下次发代码能不能写个说明?能不能带个格式,实在不行能不能截个图?
要不是我玩过这个游戏………………
import random
def demon_attack(demon_list: list, attack_count, demon_site, attack: bool = True):
if len(demon_list) == 0:
return attack_count
# 假设都是死的第一个
die_index = 0
if not attack:
die_index = random.sample(range(len(demon_list)), 1)[0]
children_count = 0 # 默认被撞死了蓝胖
if demon_list[die_index] > 0: # 死一个939 生一堆儿子
children_count = min(3, demon_site - len(demon_list[1:]))
demon_list = demon_list[:die_index] + [0] * children_count + demon_list[die_index + 1:]
attack_count += 1
return demon_attack(demon_list, attack_count, demon_site, not attack)
def calculate_pen_count(count_penzi):
attack_count = 0 # 死一个恶魔会喷一下
attack_count = demon_attack([1] * (7 - count_penzi), attack_count, 7 - count_penzi, True)
return count_penzi * attack_count
for count_penzi in range(8):
print(count_penzi, '个喷子 +', 7-count_penzi, '个939,能喷', calculate_pen_count(count_penzi), '下')
0 个喷子 + 7 个939,能喷 0 下
1 个喷子 + 6 个939,能喷 18 下
2 个喷子 + 5 个939,能喷 30 下
3 个喷子 + 4 个939,能喷 36 下
4 个喷子 + 3 个939,能喷 28 下
5 个喷子 + 2 个939,能喷 20 下
6 个喷子 + 1 个939,能喷 12 下
7 个喷子 + 0 个939,能喷 0 下
考虑到存在随机的因素,修改了第二个函数:
import numpy as np
def calculate_pen_count(count_penzi):
attack_count_list = [demon_attack([1] * (7 - count_penzi), 0, 7 - count_penzi, True) for _ in range(1000)]
attack_count_list = np.array(attack_count_list) * count_penzi
return np.mean(attack_count_list), np.std(attack_count_list)
for count_penzi in range(8):
mu_hat,sigma_hat = calculate_pen_count(count_penzi)
print(count_penzi, '个喷子 +', 7-count_penzi, '个939,平均能喷', mu_hat, '下,标准差为:', sigma_hat)
0 个喷子 + 7 个939,平均能喷 0.0 下,标准差为: 0.0
1 个喷子 + 6 个939,平均能喷 17.086 下,标准差为: 1.5292494891285724
2 个喷子 + 5 个939,平均能喷 27.714 下,标准差为: 2.5834480834729385
3 个喷子 + 4 个939,平均能喷 32.25 下,标准差为: 3.1855140872392953
4 个喷子 + 3 个939,平均能喷 30.964 下,标准差为: 3.154473648645682
5 个喷子 + 2 个939,平均能喷 22.39 下,标准差为: 2.4975788275848276
6 个喷子 + 1 个939,平均能喷 12.0 下,标准差为: 0.0
7 个喷子 + 0 个939,平均能喷 0.0 下,标准差为: 0.0