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

为什么循环前两次迭代时sample函数返回的随机数集合完全相同?

导致该现象的具体原因

核心原因是你使用的pandas版本低于1.2.0,该版本范围内的DataFrame.sample()方法存在官方已知的随机数状态继承缺陷:

  • 当你对同一个DataFrame连续调用sample()且未显式指定random_state参数时,内部随机数生成器的状态不会在连续调用时正确传递,前两次调用会复用同一个初始随机种子,因此返回的抽样结果完全一致,第三次调用才会正常刷新随机状态得到不同结果。
  • 小概率场景:如果你在循环外部手动设置过全局随机种子(比如调用过numpy.random.seed()),也可能触发类似表现。

另外你贴出的示例代码循环范围为range(0,2)只会执行2次循环,和你描述的三次输出不符,大概率是写示例时写错了循环参数。

修复方案

  1. 直接升级pandas到1.2.0及以上的稳定版本,该bug已经在后续版本中被官方修复
  2. 临时规避可以在每次调用sample()时显式传入不同的随机状态参数,示例如下:
exp = []
for i in range(0,3):
    exp.append(sample_data.sample(n=5, random_state=i))
    print(exp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:24:07