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

如何让scipy.stats.truncnorm.rvs使用numpy.random.default_rng()?

问题根因

你遇到的报错是新旧版本NumPy随机数接口不兼容导致的:

  • NumPy 1.17之后推出的新随机数生成器Generator(也就是default_rng()返回的对象)接口和老版本的RandomState不同:老接口生成均匀随机数的方法叫random_sample,而新Generator对应的方法叫random。
  • 你使用的SciPy 1.5.0版本中,truncnorm.rvs的内部实现还没有适配新的Generator接口,仍然调用random_sample方法,所以触发属性不存在的报错;而norm.rvs在该版本已经完成了新接口适配,因此运行正常。

解决方法

方案1:兼容当前版本,换用老版随机生成器

不用升级依赖,直接把随机生成器替换为老版RandomState即可,示例代码如下:

from scipy.stats import truncnorm
import numpy as np
rg = np.random.RandomState(12345)
res = truncnorm.rvs(0.0,1.0,size=10, random_state=rg)

方案2:升级SciPy版本

将SciPy升级到1.7.0及以上版本,该版本及后续的SciPy已经完成了全部分布对新Generator接口的适配,你原来的代码可以直接正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:36:03