如何构造含1-8无重复随机数的2D 3×3矩阵?
原代码验证与正确实现
原代码不符合需求的原因
- 取值范围错误:
np.random.randint(0,10)生成的是09区间的整数,包含需求不允许的0和9,不符合18的取值要求 - 无去重逻辑:randint方法默认允许生成重复数值,无法满足无重复的要求
- 需求存在逻辑矛盾:3×3矩阵总共需要9个元素,但18仅包含8个不同的数字,理论上无法实现9个位置都用18的数且无重复,以下按两种常见的修正需求场景给出实现方案
方案1:需求修正为3×3矩阵元素为1~9的无重复随机数
先生成1~9的有序数组,随机打乱后重塑为3×3矩阵即可:
import numpy as np random_matrix = np.random.permutation(np.arange(1, 10)).reshape(3, 3) print(random_matrix)
方案2:严格保留1~8无重复要求,额外补充1个指定值
如果必须使用1~8的无重复数,可在9个位置中剩余1个位置填充自定义值(示例填充0),实现如下:
import numpy as np # 生成1-8的无重复随机序列 nums = np.random.permutation(np.arange(1, 9)) # 补充指定值后重塑为3x3矩阵 random_matrix = np.append(nums, 0).reshape(3, 3) print(random_matrix)
内容的提问来源于stack exchange,提问作者qqq
相关产品推荐
相关产品推荐

