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

如何在Bash脚本中实现随机矩阵生成功能?

如何修改Bash脚本生成随机矩阵

原脚本通过手动输入填充矩阵,要实现随机矩阵生成,只需要把手动读取元素的逻辑替换为自动生成随机数即可,以下是具体修改方案:

修改后的完整脚本

#!/bin/bash

# 读取矩阵的行列数
read -p "Give rows and columns: " n

# 生成随机矩阵元素
echo "Generated random matrix:"

let i=0
while [ $i -lt $n ]
do
    let j=0
    # 每行元素按空格分隔输出,方便查看
    row=""
    while [ $j -lt $n ]
    do
        # 用Bash内置的$RANDOM生成0-32767的随机数,取模100得到0-99的数
        random_num=$((RANDOM % 100))
        x[$((n*$i+$j))]=$random_num
        row="$row $random_num"
        j=$(($j+1))
    done
    # 打印当前行,去掉开头的空格
    echo "${row# }"
    i=$(($i+1))
done

关键修改点说明

  • 替换原脚本的read x[...]为随机数赋值:用Bash内置变量$RANDOM直接生成随机数,默认范围是0-32767。如果需要自定义范围,比如生成1-50的整数,改成random_num=$((1 + RANDOM % 50))即可(% 50得到0-49,加1后变为1-50)。
  • 新增矩阵输出逻辑:原脚本仅将元素存入数组,修改后会逐行打印生成的随机矩阵,方便直观查看结果。

可选优化:支持非方阵

如果需要支持行列数不同的矩阵(非方阵),可以修改读取行列的逻辑,分别读取行数和列数:

# 替换原读取行列的代码
read -p "Give rows: " rows
read -p "Give columns: " cols

然后循环条件和数组索引计算对应改为rows和cols:

let i=0
while [ $i -lt $rows ]
do
    let j=0
    row=""
    while [ $j -lt $cols ]
    do
        random_num=$((RANDOM % 100))
        x[$((cols*$i+$j))]=$random_num
        row="$row $random_num"
        j=$(($j+1))
    done
    echo "${row# }"
    i=$(($i+1))
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:45:33