在python / numpy / scipy中生成低差异的准随机序列?

时间:2014-06-26 15:00:19

标签: python numpy random numbers scipy

这里有already a question,但答案包含一个断开的链接,并且已经超过两年了,我希望现在有一个更好的解决方案:)

低差异准随机序列,例如, Sobol序列比均匀随机序列更均匀地填充空间。有没有一种好的/简单的方法在python中生成它们?

3 个答案:

答案 0 :(得分:8)

我认为Python中低差异序列的最佳替代方案是灵敏度分析库(SALib):

https://github.com/SALib/SALib

我认为这是一个活跃的项目,您可以联系作者,检查您所需的功能是否已经实施。如果这不能解决您的问题,Corrado Chisari将Matlab(由John Burkardt制作)制作的SOBOL版本移植到Python,您可以在此处访问它:

http://people.sc.fsu.edu/~jburkardt/py_src/sobol/sobol.html

有人清理了这些来源中的评论,并将其放在docstrings的格式中。它更具可读性,你可以在这里访问它:

https://github.com/naught101/sobol_seq

答案 1 :(得分:1)

Scipy 现在有这个选项http://scipy.github.io/devdocs/generated/scipy.stats.qmc.Sobol.html

PyTorch 还证明了生成 sobol 随机数的选项。它允许高达 ~1k 的维度,并且可以选择开启加扰。 https://pytorch.org/docs/stable/generated/torch.quasirandom.SobolEngine.html

答案 2 :(得分:0)

Chaospy也是有效的选项。人们可以选择几种低差异采样方法(包括'Sobol,拉丁超立方体等)-有关更多详细信息,请参见the documentation