私が直面している問題は、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