Python 大群体的随机数

Python 大群体的随机数,python,scikit-learn,Python,Scikit Learn,我有大量样本(n_population>sys.maxsize)可从中采集n_样本,例如: n_人口=222566393186670493696 n_样本=2 我的第一个想法是使用,因为我们使用scikit learn,更重要的是,它允许我定义random_state,以一致的方式再现结果。但是,它失败了: sample_不带_替换(n_总体=n_总体,n_样本=n_样本) #溢出错误:Python int太大,无法转换为C long 我理解它失败的原因,但我发现没有办法用scikit le

我有大量样本(
n_population>sys.maxsize
)可从中采集
n_样本
,例如:

n_人口=222566393186670493696
n_样本=2
我的第一个想法是使用,因为我们使用scikit learn,更重要的是,它允许我定义
random_state
,以一致的方式再现结果。但是,它失败了:

sample_不带_替换(n_总体=n_总体,n_样本=n_样本)
#溢出错误:Python int太大,无法转换为C long
我理解它失败的原因,但我发现没有办法用scikit learn解决这个问题。所以我转向普通Python,使用内置的。然而,它也失败了:

random.sample(范围(n_总体),k=n_样本)
#溢出错误:Python int太大,无法转换为C大小\u t
最终,我想出了一个很好的解决办法:

samples=[]
而len(样品)

但它缺少
随机状态
。是否有更好的解决方案,最好在scikit learn顶部实现?

您可以使用它设置随机值state@Sparky05
random.seed
和scikit learn
random\u state
之间有什么关系?看起来我需要设置两个:-(据我所知,它们是各自伪随机数生成器的独立控制值。但是,您可以轻松创建一个同时设置这两个值的方法,并且每次需要修复状态时(可能在代码中只调用一次)都调用此方法。另一句话是,您的“随机样本”。我不确定伪随机数生成器的精度。因此,如果您的数字范围可能大于这些范围(这意味着此范围内的任何数字都不能进行采样)。你应该看看这个。-刚刚检查了它的53位长和65位,你正好超过了
numpy
限制(据我所知,这是sklearn使用的),请参见您可以使用来设置随机值state@Sparky05
random.seed
和scikit learn
random\u state
之间的关系是什么?看起来我需要同时设置两个:-(据我所知,它们是各自伪随机数生成器的独立控制值。但是,您可以轻松创建一个同时设置这两个值的方法,并且每次(可能在代码中只调用一次)需要修复状态时都调用此方法。另外,您可能会遇到“随机样本”问题“。我不确定伪随机数生成器的精度。因此,如果您的数字范围可能大于这些范围(这意味着此范围内的任何数字都不能进行采样)。您应该看看这个。-刚刚检查了它的53位长和65位,您正好超过
numpy
限制1位(这是我所能看到的sklearn所使用的),看到了吗