-3

我正在尝试研究如何使掷骰子应用程序显示每个结果的百分比机会。例如,单个六面骰子将显示:1 = 16.6% 2 = 16.6% 3 = 16.6% 4= 16.6% 5 = 16.6% 6 = 16.6%。

用户将输入骰子的类型(面数 n)和要掷骰子的数量(d)。

有没有人有一个适用于 C++ 的公式?我似乎无法解决/理解到目前为止我能找到的东西。

谢谢

编辑如果可能的话,我也想将结果存储在某种数组中

4

2 回答 2

1
void dice_analysis(int dice_sides, int dice_number, float * h2, int precision)
{
     int temp=0;
     int histogram[dice_sides*dice_number];
     //init histogram
     for(int k=0;k<dice_sides*dice_number;k++)
     {
          histogram[k]=0;
     }
     //statistical analysis
     for(int i=0;i<precision;i++)
     {
          temp=0;
          for(int j=0;j<dice_number;j++)
          {

               temp+=( rand()%dice_sides +1 );
          }
          for(int k=0;k<dice_sides*dice_number;k++)
          {
               if(temp==(k+1)){histogram[k]++;}
               //actually histogram[temp]++; look better
          }


     }
     //printing the calculated results
     for(int k=0;k<dice_sides*dice_number;k++)
     {
               cout<<k+1<<":"<<(float)histogram[k]/(precision/100.0f)<<"%"<<endl;
               h2[k]=histogram[k]/(precision/100.0f);
     }


}

dice_analysis(8,2,x,1000) 的输出 ---> 两个 8 面骰子

1:0%
2:1.5%
3:4.4%
4:3.8%
5:5.7%
6:8.8%
7:9.1%
8:10.2%
9:14%
10:10.2%
11:8.3%
12:7.5%
13:6.8%
14:6%
15:2.8%
16:0.9%

您可以看到“1”对于两个或更多骰子是不可能的。此外,“9”最有可能是 %14 的机会。

你可以像这样使用:dice_analysis(8,2,output_array,1000);

于 2013-07-19T15:35:03.290 回答
0
std::vector<double> probas;
for(i = 1; i <= num_faces; ++i)
{
    std::cout << i << " = " << 100.0 / num_faces << "%" << std::endl;
    probas.push_back(100.0 / num_faces);
}

编辑矢量素材

于 2013-07-19T15:31:00.523 回答