如何运行命令的百分比

时间:2014-09-25 23:51:35

标签: python random percentage

如果他们被挑选,我有10件我想要打印的东西。但是每个人都应该有不同的发生几率。

我尝试了以下操作:

    chance = (random.randint(1,100))
    if chance < 20:
        print ("20% chance of getting this")

问题在于,如果我再说一次,机会&lt; 25,如果randint是10,那么机会&lt; 25和机会&lt; 20都不会同时运行?

以下是我希望有机会继续使用的代码。

print ("You selected Grand Theft Auto")
gta = input ("To commit GTA input GTA")
if gta in ("gta", "Gta", "GTA"):

编辑:

好吧,所以我尝试了这个,但它一直提供3个输出。

print ("You selected Grand Thief Auto")
    gta = input ("To commit GTA type GTA")
    if gta in ("gta", "Gta", "GTA"):
        chance = random.randint(0,100)
        if chance <= 1:
            print ("You stole a Bugatti Veryron")
        chance = random.randint(0,100)
        if chance <= 5:
            print ("You stole a Ferrari Spider")
        chance = random.randint(0,100)
        if chance <= 10:
            print ("You stole a Audi Q7")
        chance = random.randint(0,100)
        if chance <= 15:
            print ("You stole a BMW X6")
        chance = random.randint(0,100)
        if chance <= 20:
            print ("You stole a Jaguar X Type")
        chance = random.randint(0,100)
        if chance <= 25:
            print ("You stole a Ford Mondeo")
        chance = random.randint(0,100)
        if chance <= 30:
            print ("You stole a Audi A3")
        chance = random.randint(0,100)
        if chance <= 35:
            print ("You stole a Ford Fiesta")
        chance = random.randint(0,100)
        if chance <= 40:
            print ("You stole a Skoda Octavia")
        chance = random.randint(0,100)
        if chance <= 45:
            print ("You got caught!")

2 个答案:

答案 0 :(得分:9)

好的,如果你想要两个相互排斥的事件,其中一个发生在20%的时间而另一个发生在25%的时间,那么

chance = random.randint(1,100)
if chance <= 20:
    print "20% chance of getting this"
elif chance <= 20+25:
    print "25% change of getting this"

如果你希望它们是独立的而不是相互影响,你必须生成另一个随机数。

chance = random.randint(1,100)
if chance <= 20:
    print "20% chance of getting this"

chance = random.randint(1,100)
if chance <= 25:
    print "25% change of getting this"

答案 1 :(得分:1)

您的代码是正确的。解决此问题的方法是首先在第一个=内添加if-statement,如下所示:

 if chance <= 20

接下来可以做的是在打印结束时添加一个return语句,如下:

 if (chance <= 20):
      print(#Stuff)
      return

这个return语句将完成程序正在执行的任务,并返回另一个任务,或者只是完成。

最后,最后要做的是添加所有其他增量,如下:

 if (chance <= 20):
      print(#Stuff)
      return
 if (chance <= 25):
      print(#Stuff)
      return

 ...

 if (chance <= #last_number):
      print(#Stuff)
      return

明智的做法是确保你正在以你所寻找的几率表明所有事情。

祝你好运。