我面临的问题是我想检查有多少种不同的可能性可以从 n 个骰子中得到一定的总和。它应该看起来像这样:
n=numberOfDice
x=sum out of the rolled dice
counter=number of possibilities to get x out of n dice
我知道 - 这不是获得答案的最有效方法,但我想尝试从用户输入中创建 n 个嵌套循环。
提前致谢!
答案1
read -p 'dices=' ndices
read -p 'sum=' sum_cut
read -p 'repeat n=' rep
dices_sum ()
{
dlist=''; sum=0
local i
for ((i=1; i<=$1; i++))
do
d=$(($RANDOM % 6 + 1))
((sum+=$d)); dlist+=$d
done
}
count=0
for ((i=1; i<=$rep; i++))
do
dices_sum $ndices
echo "$sum ($dlist)"
(($sum >= $sum_cut)) && ((count++))
done
echo "c/rep $count/$rep"
外循环用于重复,内循环用于每个骰子。我必须放入local i
该函数,否则变量名会发生冲突。
称呼:
]# . dices.sh
dices=3
sum=12
repeat n=10
7 (322)
8 (152)
8 (341)
11 (614)
14 (644)
17 (656)
5 (212)
15 (564)
8 (215)
10 (613)
c/rep 3/10
该函数dices_sum()
可以通过位置参数自行调用:
]# dices_sum 6
]# echo $dlist
356123