如何编写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
相关产品推荐
相关产品推荐

