C Матрица вероятности рулетки - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь сделать рулетку, используя матрицу, у меня сгенерирована случайная вероятность, и я хочу поставить 1 в матрице пессоа [] [], когда вероятность достигнет суммы, трюк происходит потому, что у меня может быть только один 1 на столбец и строку.

Так что у меня трудное время, но это в коде, и у меня много вопросов о том, как это сделать, часть начинается на Пятый "за" ... Нужна помощь !!

#include <stdio.h>
#include <stdlib.h>
#include <time.h> 

float caminhos[6][6];
float distprop[6][6];
float acumuloprop[6];
float roleta[6][6];
float pessoa[6][6];
//Valor do espaço amostral do randomico u.u
float r = 6;
float sum;
float p;


int main(void) {
  srand(time(0)); 
printf("\n Distancia entre os circulos \n\n");
  for (int i = 0; i < r - 1; ++i){
    for (int j = 0; j < r; ++j){
        if(i == j || j < i){
          //Se o i = j significa que ele estaria saindo dele e indo para ele mesmo, logo o resultado é 0;
          caminhos[i][j] = 0;
        } else if (j < i){
          caminhos[i][j] = 0;
        } else{
          //Dando um valor aleatorio para casa distancia/
        caminhos[i][j] = (((float)rand())/(RAND_MAX/r));
        } 
        printf("%f ", caminhos[i][j]);
    }
    printf("\n");
  }

printf("\n Calculo de probabilidade das distancias 1/d \n\n");

for (int i = 0; i < r - 1; ++i){
  for(int j = 0; j < r; ++j){
      if(i == j || j < i ){
        distprop[i][j] = 0;
      } else{
        //distprop é 1 sendo dividido pela distancia dos caminhos
      distprop[i][j] = 1 / caminhos[i][j];
      acumuloprop[i] = acumuloprop[i] + distprop[i][j];
      }
      printf("%f ", distprop[i][j]);
      }
      printf("\n");
}

printf("\n Valor do acumulo de 1/d \n\n");
for(int i = 0; i < r - 1; i++){
  printf("%f ", acumuloprop[i]);
}
printf("\n");


printf("\n Calculo da probabilidade de uma distancia ser escolhida \n\n");

for(int i = 0; i < r - 1; ++i){
  for(int j = 0; j < r; ++j){
    roleta[i][j] = distprop[i][j] / acumuloprop[i]; 
    printf("%f ", roleta[i][j]);
  }
  printf("\n");
}
printf("\n");

for(int i = 0; i < r - 1; ++i){
    p = ((float)rand()/RAND_MAX);
    sum = 0;
    printf("%f ", p);
  for(int j = 0; j < r; ++j){
    sum = sum + roleta[i][j];
    if (sum < p){
      pessoa[i][j] = 0;
    } else {
      pessoa[i][j] = 1;
    }

  }
}

printf("\n");

printf("\n Matriz Pessoa \n\n");
for(int i = 0; i < r - 1; i++){
  for(int j = 0; j < r; j++){
  printf("%f ", pessoa[i][j]);
}
printf("\n");
}
printf("\n");

  return 0;
}
...