如何生成唯一随机整数列表?求完善Python随机整数列表生成函数
完善随机整数列表生成函数
基础版本(允许重复值)
直接完善你提供的list_of_nums函数,实现生成指定数量、指定范围的随机整数列表:
import random # 检查列表是否全为唯一整数 def allunique(x): unique_or_not = [] for item in x: if item in unique_or_not: return False unique_or_not.append(item) return True # 生成指定数量、指定范围的随机整数列表 def list_of_nums(): num_of_values = int(input("请输入要生成的数值数量:")) start = int(input("请输入数值范围的起始数:")) end = int(input("请输入数值范围的结束数:")) # 初始化空列表存储随机数 random_list = [] for _ in range(num_of_values): # 生成[start, end]范围内的随机整数(包含两端) random_num = random.randint(start, end) random_list.append(random_num) return random_list # 测试示例 if __name__ == "__main__": generated_list = list_of_nums() print("生成的随机列表:", generated_list) print("列表是否全为唯一整数:", allunique(generated_list))
关键说明:
- 初始化空列表
random_list用于存放生成的随机数 - 使用
random.randint(start, end)生成包含起始和结束值的随机整数(如果需要左闭右开的范围,可以改用random.randrange(start, end+1)) - 循环
num_of_values次,每次生成的数直接追加到列表,最后返回完整列表
进阶版本(生成无重复的随机整数列表)
如果需求是生成保证全唯一的随机整数列表,直接用random.sample方法会比生成后再用allunique检查更高效,同时需要处理输入数量超过范围唯一数上限的情况:
def list_of_unique_nums(): num_of_values = int(input("请输入要生成的唯一数值数量:")) start = int(input("请输入数值范围的起始数:")) end = int(input("请输入数值范围的结束数:")) # 计算范围内的唯一整数总数 total_available = end - start + 1 if num_of_values > total_available: print(f"错误:范围[{start}, {end}]内仅包含{total_available}个唯一整数,无法生成{num_of_values}个不重复的数") return None # 直接从范围内选取指定数量的不重复随机数 return random.sample(range(start, end+1), num_of_values)
关键说明:
random.sample(population, k)会从population中随机选取k个不重复的元素,返回列表- 先判断输入的数量是否超过范围能提供的唯一数上限,避免报错
内容的提问来源于stack exchange,提问作者kora
相关产品推荐
相关产品推荐

