ciao a tutti,

ho un problema con codice nativo che genera numeri casuali.
Il codice è
codice:
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;

}
Se lancio questo codice come codice c, quindi senza richiamarlo da JNI, la matrice IH contiene valori del tipo
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!!