You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅使用randint()生成指定数量的对应倍数随机数?

原有代码的问题
  • Python 中 for i in range(aantal) 是迭代预先生成的固定整数序列,循环过程中手动修改i的值不会影响下一次迭代的i取值,你写的i -= 1不会生效,循环只会固定执行aantal次。如果这aantal次生成的随机数都不满足倍数条件,最终输出的列表自然为空,极端情况下甚至会出现长度不足要求的问题。
  • 不要用list作为变量名,它是Python内置的列表类型关键字,覆盖后会影响后续列表相关操作的正常使用。
正确实现方案

方案1:保持原筛选逻辑,改用while循环控制数量

如果要求必须保持“从1-100随机抽数、符合条件才保留”的逻辑,把循环替换为while,通过判断结果列表的长度来控制是否继续生成即可:

from random import randint

result_list = []
aantal = int(input("请问你需要多少个随机数? "))
veelvoud = int(input("请问需要是哪个整数的倍数? "))

# 提前判断合法性,避免死循环
if veelvoud > 100:
    print("1-100范围内不存在该数的倍数,请输入更小的数值")
else:
    while len(result_list) < aantal:
        getal = randint(1, 100)
        if getal % veelvoud == 0:
            result_list.append(getal)

print(result_list)

方案2:直接生成符合条件的随机数(效率更高)

如果允许优化逻辑,可以直接生成随机乘数再乘以目标倍数,每次生成的数天然符合要求,完全不需要无效筛选,也仅用到了要求的randint()函数:

from random import randint

result_list = []
aantal = int(input("请问你需要多少个随机数? "))
veelvoud = int(input("请问需要是哪个整数的倍数? "))

max_multiplier = 100 // veelvoud
if max_multiplier < 1:
    print("1-100范围内不存在该数的倍数,请输入更小的数值")
else:
    for _ in range(aantal):
        # 先生成随机乘数,乘以目标倍数得到1-100范围内的符合要求的随机数
        getal = randint(1, max_multiplier) * veelvoud
        result_list.append(getal)

print(result_list)

内容的提问来源于stack exchange,提问作者Xattics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:54:03