我目前正在尝试用Python创建一个口袋妖怪游戏,然而,当你试图捕捉口袋妖怪时,那些传说中的Pokemons不会像普通的Pokemons一样拥有相同的出现率。因此,我想将百分比随机性导入Python,如果你不明白,这就是我想要发生的事情:
Magikrap 10%
Greninja 1%
Lapras 1%
Psyduck 15%
我希望Python生成10个Magikraps,如果我需要随机生成100个Pokemons
我想知道我应该从Python导入随机或我该怎么办? 谢谢
答案 0 :(得分:1)
您可以使用Random.uniform。然后创建一个具有宠物小精灵及其捕获率的数据库。如果您愿意,您甚至可以根据区域将其分开。
类似的东西:
import random
random.uniform(0,100)
在我的案例中是45.0757219
所以你可以建立一个看起来像这样的列表。 (不是实际代码)
Magikrap 0,10.4
Greninja 10.4,11
Lapras 11,11.3
Psyduck 11.3,15
然后无论数字落在哪个范围内,玩家都会获得与该范围相关的宠物小精灵。
希望它有意义。
答案 1 :(得分:0)
你可以制作一本口袋妖怪字典及其捕获率,如:`catch_rate = {" Magikarp":10}'。当然,你会添加更多的口袋妖怪。然后你可以使用:
import random
if random.randint(1, 100) < catch_rate[pokemon]:
print "You caught a " + pokemon + "!"
这检查随机是否足够低以至于低于捕获率,如果是,则成功。您需要为此代码分配pokemon
值才能正常工作。
答案 2 :(得分:0)
检查random库。种子随机后,有几种方法可以得到你想要的东西。
在任何情况下,它都比Tyler C所暗示的要复杂一些(我认为),因为你的范围可能不会完全达到100%。他建议的是weighted choice的变体,这是不同的。如果你愿意我可以扩展它。
要获得百分比,您需要其他东西,而且我不确定您的问题是否定义明确。如果一个神奇宝贝作为x%出现在1(而不是100)的选择中更容易,那就是那个。如果你只能生成一个神奇宝贝,你必须决定你的意思是:
1)选择神奇宝贝的几率为15%。这极大地限制了你。你不可能有这个概率的6(不同)神奇宝贝。基本上如果百分比的总和超过100 ,那是不可能的。如果所有神奇宝贝的百分比全部加起来小于1(包括在需要时不丢弃的百分比),那么实现很简单:
def genPok(amount):
for _ in range(amount):
x = random.randint(1,100)
if x >= 1 and x <= 3: yield <some 3% pokemon>
if x==4; yield <some other 1% pokemon>
等等。
2)否则你必须考虑每个选择。如果你有300只神奇宝贝,其中至少有一只可能不会超过1/300被选中。这会让你回到加权选择,我将其链接到。
答案 3 :(得分:0)
from random import randint as r
ran = r(1,100)
if ran == "1":
poke = "Lapras"
elif ran == "2":
poke = ...
so on and so on...
print "You found",poke,"!"