Я пытаюсь выяснить, как заставить приложение для игры в кости показывать процентный шанс для каждого результата. Например, на одной шестигранной кости будут отображаться: 1 = 16,6% 2 = 16,6% 3 = 16,6% 4 = 16,6% 5 = 16,6% 6 = 16,6%.
Пользователь будет вводить тип игры в кости (количество сторон n) и количество бросаемых костей (d).
Кто-нибудь получил формулу, которая будет работать для C ++? Я просто не могу понять это / понять, что я смог найти до сих пор.
Спасибо
РЕДАКТИРОВАТЬ Я хотел бы сохранить результаты в некотором массиве, если это возможно
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);
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);
}
Редактировать для векторного материала