如何让Bash中15(或var1)的调用频率是16(或var2)的4倍?
实现指定频率的数字随机调用
当然可以实现让数字15(或$var1)的调用频率是16(或$var2)的4倍!下面给你两种适配你原有代码逻辑的解决方案:
方法一:基于shuf的随机调用改造
原来的shuf是在15-16中均匀随机选,要实现4倍频率,我们可以构造一个包含4个15和1个16的候选集合,让shuf从这个集合里随机挑选一个:
echo $(shuf -e 15 15 15 15 16 -n 1)
原理很简单:候选集合里有5个元素,其中4个是15,1个是16,随机抽取时15被选中的概率就是4/5,刚好是16的4倍。
方法二:基于变量的脚本改造
如果你想用变量的方式实现,我们可以借助Bash的$RANDOM变量(它会生成0-32767之间的随机整数),通过判断随机数的范围来控制输出频率:
#!/bin/bash var1=15 var2=16 # 用模5的方式:0-3输出var1(4种情况),4输出var2(1种情况) if [ $((RANDOM % 5)) -ne 4 ]; then echo "$var1" else echo "$var2" fi exit
这里通过$((RANDOM % 5))把随机数映射到0-4的范围,其中4种情况输出var1,1种情况输出var2,完美实现了4倍的频率差异。
内容的提问来源于stack exchange,提问作者Serge
相关产品推荐
相关产品推荐

