ciao a tutti,
ho un problema con codice nativo che genera numeri casuali.
Il codice è
Se lancio questo codice come codice c, quindi senza richiamarlo da JNI, la matrice IH contiene valori del tipocodice:void genera_pesi() { register int i, j; srand((int) time(NULL)); /* La funzione RAND restituisce un intero pseudocasuale compreso tra 0 e RAND_MAX, quindi i pesi e le soglie avranno valori compresi tra 0 e 1. */ for (i = 0; i <= num_input; i++) for (j = 0; j < numhidden; j++) IH[i][j] = ((double) rand() / RAND_MAX) - 0.5; }
0.308321108 -0.125806253 -0.411981833 -0.381148894 0.382237635 0.480618824 -0.165709595 0.343524709 -0.401446707 0.096489133 -0.530874702
Se lancio lo stesso codice tramite JNI, IH ha valori del tipo
-0.499990177 -0.499993206 -0.499991434 -0.499994745 -0.499999661 -0.499997807 -0.499998376 -0.499994515 -0.499995277 -0.499993359 -0.499995098 -0.499987777 -0.499989834 -0.499992339
In entrambi i casi RAND_MAX è pari a 0x7FFFFFFF, ovvero 2147483647 ma, nel caso di codice nativo, rand() non sembra fornire lo valori nello stesso intervallo.
Avete già incontrato questo problema? Sapete spiegarmi cosa c'è che non va e come risolverlo?
grazie a tutti!!


					
					
					
						
  Rispondi quotando