【问题标题】:Building a list of random multiplication examples构建随机乘法示例列表
【发布时间】:2018-11-05 20:08:35
【问题描述】:

我有两个 100 元素列表,其中填充了 1 到 10 之间的随机数。

我想列出随机选择的数字的乘法列表,直到生成大于 50 的乘积。

如何获得这样一个列表,其中每个元素都是一个产品及其两个因素?

这是我尝试过的代码。我认为它有很多问题。

import random
list1 = []
for i in range(0,1000):
    x = random.randint(1,10)
    list1.append(x)

list2 = []
for i in range(0,1000):
    y = random.randint(1,10)
    list2.append(y)

m=random.sample(list1,1)
n=random.sample(list2,1)

list3=[]
while list3[-1][-1]<50:
    c=[m*n]
    list3.append(m)
    list3.append(n)
    list3.append(c)
print(list3)

我想要的输出

[[5.12154, 4.94359, 25.3188], [1.96322, 3.46708, 6.80663], [9.40574, 2.28941, 21.5336], [4.61705, 9.40964, 43.4448], [9.84915, 3.0071, 29.6174], [8.44413, 9.50134, 80.2305]]

为了更具描述性:

[[randomfactor, randomfactor, product],......,[[randomfactor, 随机因子,大于 50]]

【问题讨论】:

  • 您正在起草整数。你的演示有花车。它会是什么?
  • 首先,当你开始迭代list3时,你会得到IndexError,因为你想从没有元素的list中获取list的最后一项。明白了吗? ;)

标签: python-3.x list random multiplication


【解决方案1】:

准备两个包含 1000 个数字的列表,每个列表中的数字从 1 到 10 是浪费内存。如果这只是一个简化,并且您想从其他列表中提取,只需替换

a,b = random.choices(range(1,11),k=2)

a,b = random.choice(list1), random.choice(list2)

import random

result = []
while True:
    a,b = random.choices(range(1,11),k=2)  # replace this one as described above
    c = a*b
    result.append( [a,b,c] )
    if c > 50:
        break

print(result)

输出:

[[9, 3, 27], [3, 5, 15], [8, 5, 40], [5, 9, 45], [9, 3, 27], [8, 5, 40], [8, 8, 64]]

如果您需要 1000 个介于 1 和 10 之间的随机整数,请执行以下操作:

random_nums = random.choices(range(1,11),k=1000)

如果比循环和附加单个整数 1000 次要快得多。


独库:

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 2012-09-10
相关资源
最近更新 更多