开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2013
问题(Question):
我不太确定这种问题能否在这边发问,不过还是会试着尽量详述我的问题与想法
这次有个功课,是要写一个能够计算扔n次骰子,出现的点数和的机率
比方说,扔一次骰子,点数会有1~6,机率各是1/6
扔两次骰子,点数会从2~12,机率则会分别是{1,2,3,4,5,6,5,4,3,2,1}/36
依此类推
我最一开始的想法很直白,就是写一个多层的巢状循环来做这件事情
像是扔两次骰子的情况下:
int a[11]; //然后把每个位置都初始为0
for(int i = 1; i <= 6; i++)
for(int j = 1; j <= 6; j++)
{
a[i + j]++;
}
扔三次骰子的话,则再多加一层以k为变量驱动的for循环,然后变成a[i + j + k]++;
依此类推,就可以算出每种点数和的个别次数,进而得知每种点数和的机率
但是现在的麻烦就是:n是使用者给定的,而n的大小关系到循环的层数
我不知道该怎么随着n的变化而增减循环层数,也不知道C++有没有办法做到这件事情
另一个有想到的作法是用递回,但是我的递回能力不怎么样,不知道该怎么实现这个想法
请问版上的板友们能够提供我一些可以实现此想法的建议或提示吗?
或者能够指引我另一条路?
感谢