技术问询:如何生成满足指定奇偶频率比例的50个随机数
两种随机数列表生成方案
方案1:生成50个随机数,偶数数量近似为奇数的两倍
思路说明
严格来说,偶数数量是奇数2倍时,总数量必须是3的整数倍(奇数x个+偶数2x个=3x个),但50不是3的倍数,所以取最接近的比例:17个奇数,33个偶数(33≈17×2-1),基本满足要求。
实现代码(Python)
import random # 设定数量:17个奇数,33个偶数,总和50 odd_count = 17 even_count = 50 - odd_count # 生成指定数量的奇数和偶数(范围可自行调整,这里用1-100) odds = [random.randrange(1, 101, 2) for _ in range(odd_count)] evens = [random.randrange(2, 101, 2) for _ in range(even_count)] # 合并后打乱顺序,保证随机性 result = odds + evens random.shuffle(result) # 验证数量 print(f"奇数数量:{len(odds)},偶数数量:{len(evens)}") print("前10个随机数:", result[:10])
方案2:生成50个1-10的随机数,奇数出现频率约为偶数的两倍
思路说明
通过加权随机选择实现频率要求:给1-10中的每个奇数分配2倍于偶数的权重,这样随机选择时,奇数被选中的概率是偶数的2倍,最终频率会接近要求。
实现代码(Python)
import random # 目标数字范围:1-10 num_range = list(range(1, 11)) # 权重设置:奇数权重2,偶数权重1 weights = [2 if num % 2 != 0 else 1 for num in num_range] # 生成50个加权随机数 result = random.choices(num_range, weights=weights, k=50) # 验证频率 odd_freq = sum(1 for num in result if num % 2 != 0) even_freq = 50 - odd_freq print(f"奇数出现次数:{odd_freq},偶数出现次数:{even_freq}") print("前10个随机数:", result[:10])
内容的提问来源于stack exchange,提问作者Sophia
相关产品推荐
相关产品推荐

