如何按一定步骤生成随机数?
How to generate random numbers by a certain step?
对于学校,我们必须在 python 中创建一个程序,在该程序中我们生成给定数量的随机数,您可以选择乘法。我试过这段代码(它会显示我的列表是空的)但我想知道 python 中是否有针对此的特定功能,因为我似乎无法找到如何去做。
此外,除了 randint()
,我们不能使用任何其他函数
from random import randint
list = []
aantal = int(input("Hoeveel random getallen wilt u? "))
veelvoud = int(input("Welke veelvoud? "))
for i in range(aantal):
getal = randint(1, 100)
if getal % veelvoud == 0:
list.append(getal)
else:
i -= 1
print(list)
我做了一些研究,我认为这是最简单也是最 used/known 的方法。
当你将两个随机数相乘时,你可以给它带来更多的随机性,但 idk,对我来说似乎很奇怪。
您可以使用 random.randrange
。例如
random.randrange(5, 101, 5)
将在 {5, …, 95, 100} 中给出一个随机数。
如果你想要其中的几个,最好的方法是列表理解。所以
[random.randrange(multiple, 101, multiple) for _ in range(count)]
会给你一个 count
数字的列表,包括 1-100,要求它们是 multiple
的倍数。
所以你的代码可以是
from random import randrange
aantal = int(input("Hoeveel random getallen wilt u? "))
veelvoud = int(input("Welke veelvoud? "))
print([randrange(veelvoud, 101, veelvoud) for _ in range(aantal)])
请注意,您的原始代码不会给出 aantal
数字,因为您的 i -= 1
在此上下文中不执行任何操作 – for 循环会在每次迭代时覆盖 i
的值.
这是解决问题的另一种方法:
请求用户输入随机数的个数,以及步骤
创建一个空列表
当列表包含的元素少于请求的数量时,生成 1 到 100 之间的随机数
检查随机数是否为step的倍数,如果是则加入列表
from random import randint
number = int(input("How many random numbers to generate?: "))
step = int(input("Multiple of which number? : "))
nums_list = []
while len(nums_list) < number:
rand = randint(1, 100)
if rand % step != 0:
continue
else:
nums.append(rand)
print(nums_list)
一种更有效的方法是生成随机数,使该数字始终是步长的倍数:
from random import randint
number = int(input("How many random numbers to generate?: "))
step = int(input("Multiple of which number? : "))
# The highest number that can be multiplied with the step to
# produce a multiple of the step less than 100
max_rand = floor(100/step)
nums_list = []
for _ in range(number):
rand = randint(1, max_rand) * step
nums_list.append(rand)
print(nums_list)
对于学校,我们必须在 python 中创建一个程序,在该程序中我们生成给定数量的随机数,您可以选择乘法。我试过这段代码(它会显示我的列表是空的)但我想知道 python 中是否有针对此的特定功能,因为我似乎无法找到如何去做。
此外,除了 randint()
,我们不能使用任何其他函数from random import randint
list = []
aantal = int(input("Hoeveel random getallen wilt u? "))
veelvoud = int(input("Welke veelvoud? "))
for i in range(aantal):
getal = randint(1, 100)
if getal % veelvoud == 0:
list.append(getal)
else:
i -= 1
print(list)
我做了一些研究,我认为这是最简单也是最 used/known 的方法。 当你将两个随机数相乘时,你可以给它带来更多的随机性,但 idk,对我来说似乎很奇怪。
您可以使用 random.randrange
。例如
random.randrange(5, 101, 5)
将在 {5, …, 95, 100} 中给出一个随机数。
如果你想要其中的几个,最好的方法是列表理解。所以
[random.randrange(multiple, 101, multiple) for _ in range(count)]
会给你一个 count
数字的列表,包括 1-100,要求它们是 multiple
的倍数。
所以你的代码可以是
from random import randrange
aantal = int(input("Hoeveel random getallen wilt u? "))
veelvoud = int(input("Welke veelvoud? "))
print([randrange(veelvoud, 101, veelvoud) for _ in range(aantal)])
请注意,您的原始代码不会给出 aantal
数字,因为您的 i -= 1
在此上下文中不执行任何操作 – for 循环会在每次迭代时覆盖 i
的值.
这是解决问题的另一种方法:
请求用户输入随机数的个数,以及步骤
创建一个空列表
当列表包含的元素少于请求的数量时,生成 1 到 100 之间的随机数
检查随机数是否为step的倍数,如果是则加入列表
from random import randint
number = int(input("How many random numbers to generate?: "))
step = int(input("Multiple of which number? : "))
nums_list = []
while len(nums_list) < number:
rand = randint(1, 100)
if rand % step != 0:
continue
else:
nums.append(rand)
print(nums_list)
一种更有效的方法是生成随机数,使该数字始终是步长的倍数:
from random import randint
number = int(input("How many random numbers to generate?: "))
step = int(input("Multiple of which number? : "))
# The highest number that can be multiplied with the step to
# produce a multiple of the step less than 100
max_rand = floor(100/step)
nums_list = []
for _ in range(number):
rand = randint(1, max_rand) * step
nums_list.append(rand)
print(nums_list)