Я пытаюсь сделать рулетку, используя матрицу, у меня сгенерирована случайная вероятность, и я хочу поставить 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;
}