使用Python模拟武侠小说中两派人的一场遭遇战。
每个人都有名字、血量(HP) 、一系列技能及技能对应的攻击输出。每个人的攻击方式均一致,即随机从自己的技能包中抽取一个技能进行攻击。两派人(自己命名)均继承
自武林人士这个父类,但有各个门派都有各自的技能包及对应的输出值。门派下每个人拥有的技能包都是在实例化对象的时候随机赋子的。
遭遇战的时候,每个帮派的人数不确定。战斗采用回合制的方式进行,即整派A中的一个人随机选择帮派B中的一个人进行攻击, B受到的伤害值为A随机选择的技能的输出值加
上20%的标准正态分布生成的随机数向下取整,即伤害值=输出值(1+0.2*N( 0,1)),技能被选择的概率和其对应的输出值成反比,如某人拥有两个技能,输出值分别为10、30
则技能1的被选择概率为 (1/10)/(1/10 + 1/30).其中某一门派参与战斗的所有人都则阵亡(既HP降为0)则战斗结束。
几个随机数生成函数:首先引入random包, import random; random.random()生成一个0-1的均匀分布随机数; random.randint(a,b)生成取信范围为[a.b])的数随机
import random # 导入库
import numpy as np
import math
from matplotlib import pyplot as plt
shaolin = {"玄难": 135, "玄寂": 132, "玄奘": 136, "玄苦": 137, "玄渡": 131} # 人 及其 HP
carefree = {"康广陵": 91, "范百龄": 93, "薛慕华": 108} # 人 及其 HP
s_skill = {"大金刚掌": 20, "如来千手": 30, "擒龙功": 25, "金刚指": 30, "少林长拳": 35} # 技能及其输出值
c_skill = {"小无相功": 20, "天山折梅手": 30, "八荒六合唯我独尊功": 25, "天上六阳掌": 30} # 技能及其输出值
d_sname = {}
d_cname = {}
s_suiji = {}
c_suiji = {}
class Wulinpeople():
def __init__(self):
self.s_name = random.sample(list(s_skill),random.randrange(1,len(s_skill)+1))
self.c_name = random.sample(list(c_skill),