사용자 입력 n에서 n개의 중첩 루프를 만드는 방법은 무엇입니까?

사용자 입력 n에서 n개의 중첩 루프를 만드는 방법은 무엇입니까?

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

관련 정보