返回随机等级w /特定百分比

时间:2014-04-01 20:50:08

标签: python python-3.x

您好我正在创建一个函数来返回一个字符串,具体取决于该字符串的值,即返回一个更高的数字。

4 个答案:

答案 0 :(得分:1)

<强>更新

问题最初有代码,请参阅修订历史,这是对其原始代码的一些语法修正。

我看到以下几个语法问题,有更简单的方法,但如果你想知道你所拥有的问题,请参考其他答案以简化实现:

  1. 不要import randint你应该这样做:

    from random import randint
    

    或:

    import random
    

    当你使用像randint这样的东西时加上random,即

    random.randint(0, 45)
    
  2. 请勿使用+=代替使用append方法,如下所示:

    a.append(randint(0,45))
    
  3. 您不想要random(a),而您可能需要choice,因此请将其重写为:

    random.choice(a)
    

答案 1 :(得分:1)

def gen_grade():
    ranges = [(90,100),(80,89),(70,79),(0,69)]
    odds = [0.45,0.35,0.15,0.05]
    rnd_key = random.random()
    for i in range(len(odds)):
        if rnd <= sum(odds[:i]): return random.randint(*ranges[i])

num_grades_to_gen = 25
grades = [gen_grade() for i in range(num_grades_to_gen)]

可能就是我这样做的方式

答案 2 :(得分:1)

更简洁的方法是定义垃圾箱,只需要一个1-100的随机数。 然后条件检查:

 i = randint(0,100)
 if i in range(0,45):
    return randint(90,100)
 elif i in range(45,80):
    return randint(80,89)
 elif i in range(80,95):
    return randint(70,79)
 else:
    return randint(0,69)

答案 3 :(得分:0)

这可能很简单,但并不多:

def autograder ():
    bucket = random.randint (1, 100)
    if bucket <= 45:
        return randint (90, 100)
    if bucket <= 80:
        return randint (80, 89)
    if bucket <= 95:
        return randint (70, 79)
    return randint (0, 69)