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

如何编写Bash脚本生成两个和为输入年龄的随机数?

解决Bash脚本生成和为指定年龄的两个随机数问题

你的代码问题在于只是直接拼接输出了$RANDOM+$RANDOM="$age"字符串,并没有实际计算出两个和为输入年龄的随机数。$RANDOM每次调用都会生成新随机数,而你只是把它们连在一起,没有做任何逻辑让两者之和等于输入的年龄。

正确的思路是:先生成一个0到输入年龄之间的随机数,另一个数直接用年龄减去这个随机数,这样两者的和必然等于输入的年龄。另外最好加个输入验证,避免用户输入非数字内容导致脚本报错。

修正后的脚本代码:

#!/bin/bash

# 询问用户年龄并验证输入是否为正整数
while true; do
    read -p "Enter your age: " age
    if [[ "$age" =~ ^[0-9]+$ ]]; then
        break
    else
        echo "请输入有效的正整数年龄!"
    fi
done

# 生成第一个0到age之间的随机数
random_num1=$((RANDOM % (age + 1)))
# 计算第二个数,确保两者之和等于age
random_num2=$((age - random_num1))

# 输出结果
echo "两个相加等于你的年龄的随机数是:$random_num1 和 $random_num2"

代码说明:

  • 用while循环加正则验证,确保用户输入的是正整数,避免后续计算出错。
  • $((RANDOM % (age + 1))):RANDOM生成0到32767的随机数,取模age+1可以得到0到age之间的随机整数(包含两端)。
  • $((age - random_num1)):直接用年龄减去第一个随机数,保证两者之和正好等于输入的年龄。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:05:21