【问题标题】:Python randomnumber arrayPython随机数数组
【发布时间】:2016-03-23 23:03:39
【问题描述】:

所以,我有一个小问题,女巫在 python 中为二维数组创建随机数。

我有一个像这样的矩阵

matrix:
       row = ['.' for i in range(w)]
        self.matrix = [row]
        for j in range(h - 1):
            row = ['.' for i in range(w)]
            self.matrix.append(row)

w = int(input("please insert the width of the array: "))
h = int(input("please insert the height of the array: "))

user = int(input("please insert a number for objects: "))

x = random.sample(range(w), user)
y = random.sample(range(h), user)

list(zip(x, y))

所以,现在我想创建这么多随机数作为用户输入。例如,如果用户输入 100,我需要 x 和 y 中的 100 个数字,这样我就可以将它们用作位置,将对象随机插入到数组中。

但如果宽度和高度更小,那么用户输入会出错。

【问题讨论】:

  • 这里“在样本中引发 ValueError(“样本大于总体”)”
  • 您的user 值大于len(range(w))(或len(range(h))
  • 是的,但是有没有办法克服这个问题,我尝试了其他随机可能性,但还没有找到解决方案。
  • 独立调用random.sample 两次对我来说没有多大意义。这意味着您从网格中选择的所有点都将具有完全唯一的 x 坐标和 y 坐标——例如,您永远不会同时得到 (0,0) 和 (0,1)。如果你想要真正随机的坐标,你需要创建一个所有坐标的列表并在该列表上调用sample 一次。
  • 这确实更有意义,我会尝试一下。谢谢 :)

标签: python arrays random numbers position


【解决方案1】:

xy 使用以下两行应该会给您预期的结果:

x = [random.randint(0, w-1) for c in range(user)]
y = [random.randint(0, h-1) for c in range(user)]

【讨论】:

  • 是的,确实有效,非常感谢,它对我帮助很大!
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多