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

如何用Python实现random库随机性测试的批量统计需求?

测试Python random库伪随机性的实现方案

一、完整代码实现

基于你已有的代码,补充循环逻辑即可完成需求,完整代码如下:

import random as rd
import statistics as st

# 初始化存储统计结果的列表
means = []
medians = []
stdevs = []

# 重复10000次统计操作
for _ in range(10000):
    # 生成10000个1到10000的随机整数
    numbers = [rd.randint(1, 10000) for _ in range(10000)]
    # 计算并存储单次统计结果
    means.append(st.mean(numbers))
    medians.append(st.median(numbers))
    stdevs.append(st.stdev(numbers))

# 对三个统计结果列表再做统计分析
print("均值列表的统计:")
print(f"均值: {st.mean(means)}, 中位数: {st.median(means)}, 标准差: {st.stdev(means)}")

print("\n中位数列表的统计:")
print(f"均值: {st.mean(medians)}, 中位数: {st.median(medians)}, 标准差: {st.stdev(medians)}")

print("\n标准差列表的统计:")
print(f"均值: {st.mean(stdevs)}, 中位数: {st.median(stdevs)}, 标准差: {st.stdev(stdevs)}")

二、代码可行性说明

这个方案在代码层面完全可行:

  • 逻辑清晰,每一步严格对应需求,无语法错误;
  • 量级上,10000次循环每次生成10000个数,Python的内存和计算能力完全能承载,运行时间大概几秒到十几秒(取决于机器性能);
  • statistics库是Python标准库实现,稳定可靠,适合新手快速上手。

三、更高效的随机性测试方法

如果想提升效率或者做更专业的随机性测试,可以试试这些方向:

1. 用numpy替代纯Python实现

numpy的向量化运算比Python列表循环效率高很多,能大幅缩短运行时间,示例代码:

import numpy as np

means = []
medians = []
stdevs = []

for _ in range(10000):
    # numpy生成随机整数数组
    numbers = np.random.randint(1, 10001, size=10000)
    means.append(np.mean(numbers))
    medians.append(np.median(numbers))
    stdevs.append(np.std(numbers, ddof=1))  # ddof=1对应样本标准差,和statistics.stdev逻辑一致

# 最终统计
print("均值列表统计:", np.mean(means), np.median(means), np.std(means, ddof=1))
print("中位数列表统计:", np.mean(medians), np.median(medians), np.std(medians, ddof=1))
print("标准差列表统计:", np.mean(stdevs), np.median(stdevs), np.std(stdevs, ddof=1))

2. 专业统计检验方法

伪随机性测试不止看均值、中位数这类描述统计,还可以用统计检验验证是否符合均匀分布:

  • 卡方拟合优度检验:检验随机数在各个区间的频数是否符合均匀分布;
  • Kolmogorov-Smirnov检验:对比生成数据的累积分布函数和理论均匀分布的差异;
  • 可以用scipy.stats库实现这些检验,示例:
from scipy import stats

numbers = np.random.randint(1, 10001, size=10000)
# 卡方检验
chi2, p_value = stats.chisquare(np.histogram(numbers, bins=10)[0])
print(f"卡方检验p值:{p_value}")  # p值>0.05则无法拒绝均匀分布假设

# KS检验,对比[1,10000]的均匀分布
ks_stat, p_value = stats.kstest(numbers, 'uniform', args=(1, 10000))
print(f"KS检验p值:{p_value}")

3. 标准伪随机数测试套件

比如Diehard测试集、NIST SP 800-22测试套件,这些是行业标准的随机性测试方法,能从频率、序列相关性、游程等多个维度验证伪随机数生成器的质量,不过需要专门的工具或库支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:45:38