python - 如何用Python为游戏制作选择性RNG?

标签 python random

这几乎肯定是一个非常新手的问题,但由于我是一个完全的新手,所以我对此很满意。

简单地说,我想知道如何在一个简单的游戏中制作一个战利品掉落系统,当你实现某个目标时,你有机会比其他人获得更多的某些元素。如果有任何开源Python游戏有这个功能,请推荐给我。

这是我所知道的做法:给定一个示例 [A,B,C,D,E,F],选择 3 项。

这确实很简单,但是,当我希望比其他样本更频繁地选择样本中的某些内容时,我该怎么办,即:给定样本 [A,B,C,D,E,F]选择 3 个,不重复,但选择 A 的时间为 30%,B 25%,C 20%,D 15%,E 5%,F 5%。

或者,也许更好的是,对所选数量没有限制(或范围限制,例如 3-5 个项目),但以不同的速率选择样本中的每个项目并且不重复,以便我可以做A 20%、B 20%、C 15%、D 10%、E 2%、F 1%。

希望这是有道理的。

最佳答案

这是一种简单、懒惰的方法。

给定一个(item,weight)对列表。

loot = [ (A,20), (B,20), (C,15), (D,10), (E,2), (F,1) ]

请注意,权重不必添加到任何特定的内容,它们只需是整数即可。

一次性准备步骤。

choices = []
for item, weight in loot:
    choices.extend( [item]*weight )

现在只是random.choice(choices)

关于python - 如何用Python为游戏制作选择性RNG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535046/

相关文章:

python - 几帧后,OpenCV HLS youtube流停止

python - 如何将特定信息从 html 提取到 python webscraper?

从大小为 n 的数组中随机生成一组 m 个整数

Python - 每组 Pandas 随机抽样

r - R 中的分层 Bootstrapping >25 层

Python随机列表

python - Django Admin 嵌套内联

python - Tensorflow 在 python for 循环中太慢

python - Pandas 到多个字典对象

Python:带有奇数和累加器的随机模块