引言
震惊!全网最火某网游抽卡模拟流出。
问题描述
输入抽卡次数X,得出抽卡结果
示例:
输入:X
输出:UR(SSR,SR,R)
解决方案
在如今大部分抽卡游戏中,抽卡都是一个结果未知的行为,所以运用random可以对其进行模拟。而且其中的大部分游戏都存在一个“保底机制(指获得某个稀有度的卡最多需要的抽卡次数)”,于是便有了如下程序
import random
m = input("请输入抽卡次数")
n = int(m)
a = 0
b = 0
c = 0
d = 0
luck = 0
number1 = 0
six = ["UR","UR"]
five = ["SSR","SSR"]
four = ["SR","SR"]
three = ["R","R"]
for i1 in range(0,n,1):
secret = random.randint(1,100)
if luck <= 50:
if 1<=secret<=2:
number1 = random.randint(0,1)
print(six[number1])
a = a + 1
elif secret<=10:
number2 = random.randint(0,1)
print(five[number2])
b = b + 1
elif secret<=60:
number3 = random.randint(0,1)
print(four[number3])
c = c + 1
else:
number4 = random.randint(0,1)
print(three[number4])
d = d + 1
else:
if 1 <= secret <= 2 * (luck-49):
number5 = random.randint(0,1)
print(six[number5])
luck = 0
a = a + 1
elif secret <= 2 * (luck-49) +8:
number6 = random.randint(0,1)
print(five[number6])
b = b + 1
elif secret <= 2 * (luck-49) +58:
number7 = random.randint(0,1)
print(four[number7])
c = c + 1
else:
number8 = random.randint(0,1)
print(three[number8])
d = d + 1
luck = luck + 1
print("抽卡结束,共抽到六星" + str(a) + "个,五星" + str(b) + "个,四星" + str(c) + "个,三星" + str(d) + "个,抽出六星比例"+ str(a/n))
p = a / n
if p > 0.02:
print("今天的爆率真高啊")
else:
print("累了,毁灭吧")
结语
这段程序模拟了拥有保底机制的抽卡游戏的抽卡环节,每次的抽卡次数可以自定义,但由于使用的是random,随机性过大,与市面上的抽卡游戏的实际有些许不符。
实习编辑:王晓姣
稿件来源:深度学习与文旅应用实验室(DLETA)