如何从用户输入 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

相关内容