python - 在python/numpy中生成多对不相等的随机整数

标签 python numpy random

在蒙特卡洛模拟的上下文中,我生成随机索引对,使用

ij = np.random.randint(0, N, (n,2))

n 可以很大(例如 10**6)。然后我遍历这些对。

问题:
我希望每一对中的数字都不同。

我找到的解决方案(例如,使用 random.samplenp.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/

相关文章:

algorithm - 将一组大整数转换为一组小整数

python - 我的正则表达式 "appears"在测试器中工作,但在我的实际代码中不起作用

python - 重新排序列表理解中的语句时出现 NameError

python - 减少python中数据框的维度

python - 如何在 pandas 中将 m×m 数据帧转换为 m*m×3 数据帧?

python - 如何在Python中使用if语句生成随机数?

c - 具有随机输入的递归函数的时间复杂度

Python:列表理解与 map

Python数据框rolling_sum包含数字而不是日期

python - 比较数组值的更简洁的方法?