【问题标题】:Python function that generates random arrays of integers not working生成随机整数数组的Python函数不起作用
【发布时间】:2020-03-19 16:42:12
【问题描述】:

我需要创建一个函数,该函数在 a 和 b(含)之间生成随机整数数组,其中 a 和 b 定义范围,M 和 N 定义输出数组的大小。我做了一些事情,但它似乎无法正常工作,我不知道如何定义输出数组的大小,将 M 和 N 放在哪里.....这是我的代码:

import random 

def Rand(start, end, num): 
    res = [] 

    for j in range(num): 
        res.append(random.randint(start, end)) 

    return res 

# Driver Code 
num = 10
start = 20
end = 40
print(Rand(start, end, num)) 

【问题讨论】:

  • 它非常适合我,你有什么问题? M和N是什么,你只需要num
  • “它似乎不能正常工作”:你有什么证据表明它不能正常工作?
  • 问题是我无法定义输出数组的范围(例如5行4列)
  • M 和 N 定义输出数组的大小 为什么 2 个变量决定 1d 列表的大小?...编辑:它是 2d 列表吗?跨度>
  • 我不明白你为什么对我投反对票,我正在寻找类似于大卫给我的解决方案......

标签: python random numbers


【解决方案1】:

你只需要两个嵌套循环(或嵌套列表理解)

例如:

import random

def random_array(start, end, a, b):

    return [[random.randint(start, end) for _ in range(a)] for _ in range(b)]

# Driver Code
a = 10
b = 5
start = 20
end = 40
print(random_array(start, end, a, b))

在我的例子中,输出:

[[35, 27, 30, 27, 26, 37, 38, 27, 36, 34], [24, 24, 29, 35, 27, 38, 38, 37, 24, 24], [35, 20, 38, 25, 26, 20, 31, 29, 27, 33], [37, 36, 34, 20, 27, 30, 33, 26, 24, 26], [28, 35, 20, 31, 33, 36, 29, 25, 36, 36]]

如果您不想使用列表推导式(尽管您可能应该),它相当于:

def random_array(start, end,  a, b):
    res = []
    for _ in range(b):
        inner = []
        for _ in range(a):
            inner.append(random.randint(start, end))
        res.append(inner)
    return res

最后说明:根据PEP-8,您不应该以大写字母开头的函数名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 2014-10-31
    • 2018-10-09
    相关资源
    最近更新 更多