编写python程序,在1到10100次之间生成3个随机数。程序应该在用逗号分隔的新行上显示每组3个数字。示例输出应格式化如下:
Number set 1 is: 10,7,8
Number set 2 is: 4,6,5
...
Number set 100 is: 7,3,1我需要帮助正确显示它。
3随机数100次。
import random
mylist = [random.randint(1,11) for r in range(100)]
x = random.sample(mylist,3)
for i in range(100):
print('Number set', i + 1, 'is', x)发布于 2020-07-01 15:55:46
问题是:
这些代码行在您的循环之外。这意味着,每次运行代码时,编号都不会是唯一的,并且对循环中的所有迭代都保持不变。
mylist = [random.randint(1,11) for r in range(100)]
x = random.sample(mylist,3)解决方案:
您可以将代码中前面提到的行移动到循环中,而不是在外部:
import random
for i in range(100):
mylist = [random.randint(1,11) for r in range(100)]
x = random.sample(mylist,3)
print('Number set', i + 1, 'is', x)或者你可以写一个更干净的解决方案:
import random
for i in range(1,101):
print(f"Number set {i} is: {random.randint(1,11)},{random.randint(1,11)},{random.randint(1,11)}")与其使用列表,该解决方案将打印格式化字符串3个不同的随机数字100倍。这将循环超过100次。
你也可以看看其他答案的选择。
random.choices()和random.sample()也是不错的选择。
阅读更多关于它们的这里
发布于 2020-07-01 15:59:56
一个更短的答案是:
import random
for x in range(100):
print('Number set', x , 'is', random.sample(range(1, 11), 3))发布于 2020-07-01 16:01:08
如果你想要数组中的随机数,你应该把random.sample()放在循环中。
import random
mylist = [random.randint(1,11) for r in range(100)]
for i in range(100):
x = random.sample(mylist,3)
print('Number set', i + 1, 'is', x)输出就像
...
Number set 98 is [4, 3, 1]
Number set 99 is [11, 11, 4]
Number set 100 is [8, 3, 6]https://stackoverflow.com/questions/62680645
复制相似问题