如何增加scipy.stats.randint的步数?

How to increase the steps of scipy.stats.randint?

我正在尝试生成一个冻结的离散均匀分布(如 stats.randint(low, high))但步长高于一个,有什么方法可以用 scipy 做到这一点吗?
我认为它可能类似于 hyperopt 的 hp.uniformint.

rv_discrete(values=(xk, pk)) 构造一个支持度 xk 和可证明性 pk.

的分布

查看文档中的示例: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_discrete.html

IIUC 您想生成一个具有步长的统一离散变量(例如,step=3,low=2 和 high=10 给出 [2,5,8] 的宇宙)

您可以生成不同的统一变量并重新缩放:

from scipy import stats
low = 2
high = 10
step = 3
r = stats.randint(0, (high-low+1)//step)
low+r.rvs(size=10)*step

示例输出:array([2, 2, 2, 2, 8, 8, 2, 5, 5, 2])