내가 직면한 문제는 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