在蒙特卡洛模拟的上下文中,我生成随机索引对,使用
ij = np.random.randint(0, N, (n,2))
n
可以很大(例如 10**6
)。然后我遍历这些对。
问题:
我希望每一对中的数字都不同。
我找到的解决方案(例如,使用 random.sample
或 np.random.choice
)建议成对生成数字。在我的例子中,这意味着在循环中重复调用随机数生成器,这会减慢代码速度。
最佳答案
这是一个简单的方法:
import numpy as np
N = 10
n = 10000
np.random.seed(0)
i = np.random.choice(N, n)
j = np.random.choice(N - 1, n)
j[j >= i] += 1
print(np.any(i == j))
# False
ij = np.stack([i, j], axis=1)
关于python - 在python/numpy中生成多对不相等的随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61793884/