随机数练习

时间:2019-12-01 18:04:44

标签: python python-3.x python-3.7

我是Python的初学者。你能帮我解决这个问题吗?

定义rolldies(n)函数,该函数模拟n个骰子的掷骰并返回掷骰的有序列表。 (例如,rolldies(3)生成1到6之间的三个随机数,例如2、5、1,并返回列表[1、2、5]。)

我做到了,但这不是练习所想要的:

import random

def rolldies():
    die1 = random.randrange(1, 6)
    die2 = random.randrange(1, 6)
    die3 = random.randrange(1, 6)
    list=[]
    list.extend((die1, die2, die3))
    list.sort(reverse = False ) 
    return list

print(rolldies())

6 个答案:

答案 0 :(得分:2)

在您的帖子中,您说该函数将类似于rolldies(n),因此您需要在函数中定义一个参数。有很多方法可以达到期望的结果。

  

方法1:使用 for循环

的解决方案
import random

def rolldies(n):
    result = []
    for i in range(n):
        number = random.randrange(1, 6)
        result.append(number)
    return sorted(result)


print(rolldies(3)) # display [3, 4, 5] for example
  

方法2:使用 list-comprehension

的解决方案
import random

def rolldies(n):
    return sorted([random.randrange(1, 6) for i in range(n)])


print(rolldies(3)) # display [2, 4, 5] for example

答案 1 :(得分:0)

您应该将列表的长度传递给函数名称rolldies()。尝试下面的代码

import random

def rolldies(n):
    list=[]
    for i in range(n):
        list.append(random.randrange(1, 6))
    list.sort(reverse = False ) 
    return list

print(rolldies(4))

答案 2 :(得分:0)

您可以使用for循环n次并生成一个随机数。在每一步中,您都将随机数放入列表中。

import random

def rolldies(n):
    roll_list = []  # This is the list where you store the rolls.
    for i in range(n):
        rand = random.randrange(1, 6)  # Generate a random number in each loop.
        print(rand)
        roll_list.append(rand)  # Add the random number to the list.
    roll_list.sort()  # Sort the list.
    return roll_list


# Here you call the function with a value for n
n = 3
print(rolldies(n))

答案 3 :(得分:0)

您需要一个for循环,以使其具有可变的次数,并需要一个空列表来存储每卷骰子。

import random

def rolldies(n):
    dice = [] #Empty list to store the rolls
    #For loop that runs n times
    for i in range(n):
        roll = random.randrange(1, 6)  #Roll the dice
        dice.append(roll)  #Store the roll in the list
    dice.sort(reverse = False)
    return dice

print(rolldies(5))

答案 4 :(得分:0)

尝试一下:)

import random

def rolldies(n):
list = []
for i in range(int(n)):
  list.append(random.randrange(1, 6))
list.sort() 
return list

print(rolldies(3))

答案 5 :(得分:0)

执行此操作的pythonic方法是使用已提供的函数:random.choices从种群中返回n个数字:

import random

def rolldies(n):
    return sorted(random.choices(list(range(1,7)), k=n), reverse=False)

print(rolldies(10))
# [1, 1, 2, 2, 3, 3, 4, 4, 5, 6]

如果必须使用randrange,则可以通过一次列表理解来完成,以创建n数字列表,例如:

import random

def rolldies(n):
    return sorted([random.randrange(1, 7) for _ in range(n)], reverse = False)

print(rolldies(10))
# [2, 2, 2, 3, 4, 4, 5, 5, 5, 6]

注意:如果要包含(1,7),则范围应为6