【问题标题】:Random number generator with exclusions具有排除项的随机数生成器
【发布时间】:2020-09-04 08:54:09
【问题描述】:

我有一个 9x9 的 numpy 数组,里面填充了数字 [1;9]。我需要选择随机位置并将此单元格分配为 0,直到获得一定的难度值。顺便说一句,我的表应该满足某些标准,并且在多次测试中检查了功能。

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),它们不会随着时间的推移而重复。有什么我可以使用的功能或我可以实现的方法吗? 提前谢谢你。

【问题讨论】:

    标签: python numpy random numpy-random


    【解决方案1】:

    基本思路:生成所有唯一对(希望棋盘不要太大),然后洗牌:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2020-05-10
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多