You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python矩阵元素,实现每行随机相邻位置赋值为1

实现注意事项

  • 首先要修正随机索引的取值范围:因为需要同时给idx和idx+1两个位置赋值,所以索引最大值不能超过w-2,否则会出现数组下标越界报错,你原代码写的randint(0,9)在w=10的场景下有概率取到9,会触发越界问题。
  • 不要写死单个变量存储每行的随机索引,直接通过循环遍历矩阵的每一行处理即可,适配任意高度的矩阵。

完整可运行代码

import random

w, h = 10, 3
# 初始化全0矩阵
matrix = [[0 for _ in range(w)] for _ in range(h)]

# 遍历每一行生成随机位置并赋值1
for row in matrix:
    # 生成合法随机索引
    rand_idx = random.randint(0, w-2)
    row[rand_idx] = 1
    row[rand_idx + 1] = 1

# 按示例格式输出矩阵
for row in matrix:
    print(''.join(map(str, row)))

如果你需要单独保留每行的随机索引(对应原代码里的a/b/c),可以用以下写法:

import random

w, h = 10, 3
matrix = [[0 for _ in range(w)] for _ in range(h)]
# 提前存储每行的随机索引,顺序对应第1行到第h行
rand_idx_list = [random.randint(0, w-2) for _ in range(h)]
print("每行随机索引:", rand_idx_list)

for row_idx in range(h):
    current_rand = rand_idx_list[row_idx]
    matrix[row_idx][current_rand] = 1
    matrix[row_idx][current_rand + 1] = 1

# 输出效果
for row in matrix:
    print(''.join(map(str, row)))

当手动指定rand_idx_list = [5,2,1]时,输出结果和你给出的示例完全一致:

0000011000
0011000000
0110000000

内容的提问来源于stack exchange,提问作者kingdomking22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:57:03