Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按百分比捕鱼-游戏_Python_Percentage - Fatal编程技术网

Python 按百分比捕鱼-游戏

Python 按百分比捕鱼-游戏,python,percentage,Python,Percentage,我想创建一个钓鱼游戏。每当玩家按下一个按钮,游戏就会返回一条鱼。 每种鱼都有一个百分比(小鱼占45%;中鱼占25%;大鱼占15%;大鱼占4.9%;鲨鱼占0.1%) fish_size=[(“小”,45),(“中”,25),(“大”,15),(“大”,4.9),(“鲨鱼”,0.1)] 如何按百分比从列表中随机获得一条鱼?您可以执行以下操作: fish_size = [("small",45),("medium",25),("big",1

我想创建一个钓鱼游戏。每当玩家按下一个按钮,游戏就会返回一条鱼。 每种鱼都有一个百分比(小鱼占45%;中鱼占25%;大鱼占15%;大鱼占4.9%;鲨鱼占0.1%)

fish_size=[(“小”,45),(“中”,25),(“大”,15),(“大”,4.9),(“鲨鱼”,0.1)]


如何按百分比从列表中随机获得一条鱼?

您可以执行以下操作:


fish_size = [("small",45),("medium",25),("big",15),("huge",5),("shark",1)]
helper = []
for x in fish_size:
    for y in range(x[1]):
        helper.append(x[0])

rand = random.randint(0, len(helper)-1)

print(helper[rand])
例如,返回

small

唯一的问题是,你不能像0.1那样使用浮动百分比,但除此之外,它工作得很好。这是因为百分比越高,辅助列表中的元素就越多。如果你得到一个rand,如果百分比更高,概率就更高。如果你有一个元素列表(在你的情况下,鱼的类型)和一个权重列表(不必标准化为
1
或100%),那么你可以使用
随机
内置包的
选择
方法。有关更多详细信息,请参阅

例如:

>>> import random
>>> fish = ['small', 'medium', 'big', 'huge', 'shark']
>>> weights = [45, 25, 15, 4.9, 0.1]
>>> random.choices(fish, weights)[0]
'medium'

请注意,您可以使用
choices
返回多个元素(使用可选的
k
关键字参数)。因此,
choices
返回一个列表。默认情况下,
k=1
,因此列表中只返回一个值。将
[0]
添加到函数调用的末尾会自动从列表中提取此值。

您的意思是百分比是获得相应种类鱼的概率吗?是的,每条鱼都有被捕获的概率。下面是一个非常有趣且出奇有效的解决方案: