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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ... !