带排除项的随机数生成器
Random number generator with exclusions
我有一个用数字 [1;9] 填充的 9x9 numpy 数组。我需要选择随机位置并将此单元格分配为 0,直到获得特定的难度值。顺便说一句,我的 table 应该满足某些标准,并且功能已经过多次测试。
while current_difficulty > self.difficulty:
i = np.random.randint(0, self.board_size, 1)
j = np.random.randint(0, self.board_size, 1)
if self.unsolved[i, j] != 0 and self.__is_solvable():
self.unsolved[i, j] = 0
current_difficulty -= 1
我需要的是获得不会随时间重复的随机值对(i 和 j)。有没有我可以使用的功能或可以实现的方法?
提前谢谢你。
基本思路:生成所有唯一对(希望棋盘不要太大),然后洗牌:
from itertools import product
# ...
indexes = list(product(np.arange(self.board_size), np.arange(self.board_size)))
np.random.shuffle(indexes) # unique indexes in random order
for i, j in indexes:
if some_check(i, j):
break
我有一个用数字 [1;9] 填充的 9x9 numpy 数组。我需要选择随机位置并将此单元格分配为 0,直到获得特定的难度值。顺便说一句,我的 table 应该满足某些标准,并且功能已经过多次测试。
while current_difficulty > self.difficulty:
i = np.random.randint(0, self.board_size, 1)
j = np.random.randint(0, self.board_size, 1)
if self.unsolved[i, j] != 0 and self.__is_solvable():
self.unsolved[i, j] = 0
current_difficulty -= 1
我需要的是获得不会随时间重复的随机值对(i 和 j)。有没有我可以使用的功能或可以实现的方法? 提前谢谢你。
基本思路:生成所有唯一对(希望棋盘不要太大),然后洗牌:
from itertools import product
# ...
indexes = list(product(np.arange(self.board_size), np.arange(self.board_size)))
np.random.shuffle(indexes) # unique indexes in random order
for i, j in indexes:
if some_check(i, j):
break