Bonjour, en fait je suis novice en C : mon probleme est le suivant :
je voudrai écrire une matrice qui calcule aléatoirement des probabilités , bien entendu les valeurs seront entre 0 et 1.
1. il faut que ma ligne soit égal à 1, donc si ma fonction me donne une première valeur (ex : 0.2) il faut que la fonction après me donne une valeur aléatoire entre (0 et 0.8) , pour cela j'ai utlisé deux float max et min, .... resultat ça marche pas. parceque la fanction prédifinie en C randomize que j'ai utilisé ne prend pas comme parmetre le max et le min.
je vous envois un fragment de code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
int main(void) {
//int my_rand ();
FILE *f= NULL;
int nbr_trans, nbr_seq;
int i, j, l, m, vec;
float min=0;
float max=1;
//int calcul();
float my_rand();
float k, maxim, y;
float temp=0;
float pTab[100][100];
//**********************************
f = fopen("hmm.txt", "r");
printf("entrez le nombre Etats :");
scanf("%d", &nbr_trans);
printf("Les probabilités : \n");
fprintf(f, "La matrice : \n");
fprintf(f, " \n");
for (j=0;j<nbr_trans; j++) {
for (i=0;i<nbr_trans; i++) {
max=max-temp;
k=my_rand(max, min);
printf ("%f\n", k);
pTab[i][j]= k;
temp=temp+pTab[i][j];
fprintf(f, "\t%f", pTab[i][j]);
fflush(stdin);
}
fprintf(f, "\n");
}
float my_rand (max, min){
static int first = 0;
if (first == 0)
{
srand (time (NULL));
first = 1;
}
//return rand();
return (float)rand() / ((float)RAND_MAX + 1.0) ;
//return (float)(min + ((float) rand ()/((float)(RAND_MAX)+1.0)* (max - min+1)));
} |
en fait , je ne sais pas si randomize ou autre fonction pourra me donner un resultat
en fait moi je voudarai dans mon code un resultat comme :
nombre d'états = 5
0.2 0.0 0.2 0.0 0.6
0.1 0.2 0.3 0.0 0.4
0.9 0.0 0.1 0.0 0.0
0.0 0.2 0.2 0.4 0.4
0.0 0.2 0.2 0.0 0.6
si vous avez remarquer la ligne elle est égal à 1
la fonction randomize ou rand() me donne les valeurs aléatoire en fonction de mon max qu'il décrémente à chaque valeur aléatoire .... est-je suis clair ?
j'avais juste oublié de dire, je vous remercie de votre interet, même une idée pour m'arranger ... !
Partager