如何生成所有数位互不重复的四位随机数?
解决数位不重复的四位随机数生成问题
你的代码仅随机选取了一个四位数,但未校验数位是否重复。这里提供两种简单可行的解决方法:
方法一:循环校验法
生成随机四位数后,检查它的四个数位是否唯一,不满足条件就重新生成,直到符合要求。代码如下:
import random while True: number = random.choice(range(1000, 10000)) # 将数字转为字符串,便于逐个检查数位 digits = str(number) # 利用集合自动去重的特性,若集合长度为4则所有数位不重复 if len(set(digits)) == 4: break print(number)
方法二:直接生成法
直接从0-9中选取4个不重复的数字,确保第一位不为0后组合成四位数。这种方法无需循环校验,效率更高:
import random # 从0-9中随机挑选4个不重复的数字 digits = random.sample(range(10), 4) # 若第一位是0则重新选取,保证是四位数 while digits[0] == 0: digits = random.sample(range(10), 4) # 将数字列表转换为整数 number = int(''.join(map(str, digits))) print(number)
也可以用更简洁的逻辑,先选第一位(1-9),再从剩余数字里选后三位:
import random # 第一位从1-9中随机选择 first_digit = random.choice(range(1, 10)) # 从剩下的9个数字里选3个不重复的 other_digits = random.sample([d for d in range(10) if d != first_digit], 3) # 拼接成四位数 number = int(f"{first_digit}{''.join(map(str, other_digits))}") print(number)
内容的提问来源于stack exchange,提问作者hamsi
相关产品推荐
相关产品推荐

