daokunn 发表于 2023-6-6 23:18

Shell脚本随机生成三位数

## 原理

对数n取余,余应为0---(n-1)范围。

我们想要产生0-25范围内的数:

```bash
expr $RANDOM % 26
```



如果想得到1--68范围内的数,可以这样:

```bash
expr $RANDOM % 68 + 1
```

- 前面可以得到最小为0,最大为67的随机数,再加上1,很自然的就可以得到最大为1,最小为68的数了。

如果想得到6--87范围内的数:

```bash
expr $RANDOM % 82 + 6
```

- 前面可以得到最小为0,最大为81的随机数,再加上6,很自然的就可以得到最大为87,最小为6的数了

### 生成三位数

三位数,也就是100-999,从上面的知识,我们可以得出:

```bash
expr $RANDOM % 900 + 100
```

前面可以得到最小为0,最大为899的随机数,再加上100,很自然的就可以得到最大为999,最小为100的数了。



```bash
for i in {1..10000}
do
num=$[$RANDOM%900+100]
echo $num
done
```





!(https://daokun-hexo.oss-cn-hangzhou.aliyuncs.com/img_for_hexo/image-20230103143646290.png)



## for循环

上面的语句可以执行。这种格式的for循环只能接受数字。

如果接受变量,则会无效。

```bash
for i in {$1..$2}
do
        echo "$i"
done
```



为此,可以使用C语言格式的循环。

```bash
j=$1
for ((i=1; i<=j; i++))
do
        echo "$i"
done
```



也就是

```bash
#!/bin/bash
read -p "生成多少个3位数呢?请输入:" count
echo $count
echo "结果:"
for((i=1;i<=count;i++))
do
num=$[$RANDOM%900+100]
echo $num
done
```





!(https://daokun-hexo.oss-cn-hangzhou.aliyuncs.com/img_for_hexo/image-20230103145004617.png)





## 结果存入文件

```bash
#!/bin/bash
read -p "生成多少个3位数呢?请输入:" count
#echo $count
#touch num.txt
#txt=num.txt
for((i=1;i<=count;i++))
do
num=$[$RANDOM%900+100]
echo $num
echo -e "$num\t" >> txt
done
```



!(https://daokun-hexo.oss-cn-hangzhou.aliyuncs.com/img_for_hexo/image-20230103145726505.png)



!(https://daokun-hexo.oss-cn-hangzhou.aliyuncs.com/img_for_hexo/image-20230103145629377.png)

Eaglecad 发表于 2023-6-6 23:55

不错,加油

13932140048 发表于 2023-6-7 05:21

谢谢分享!

mokson 发表于 2023-6-7 14:26

daokunn 发表于 2023-6-7 21:33

mokson 发表于 2023-6-7 14:26
指的是用 powershell 吗?

不是windows系统的powershell,是Linux系统的Shell
页: [1]
查看完整版本: Shell脚本随机生成三位数