根据给定的百分比随机输出一个数字

时间:2016-12-13 18:26:31

标签: python-2.7 random

我目前正在尝试用Python创建一个口袋妖怪游戏,然而,当你试图捕捉口袋妖怪时,那些传说中的Pokemons不会像普通的Pokemons一样拥有相同的出现率。因此,我想将百分比随机性导入Python,如果你不明白,这就是我想要发生的事情:

Magikrap 10%

Greninja 1%

Lapras 1%

Psyduck 15%

我希望Python生成10个Magikraps,如果我需要随机生成100个Pokemons

我想知道我应该从Python导入随机或我该怎么办? 谢谢

4 个答案:

答案 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,"!"