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

技术问询:如何生成满足指定奇偶频率比例的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 07:06:32