骰子概率

时间:2013-07-19 15:22:13

标签: c++ math dice

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

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

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

由于

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

2 个答案:

答案 0 :(得分: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)---&gt;两个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);

答案 1 :(得分: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);
}

编辑矢量内容