C++ : Corps de la fonction rand ()
Fermé
M.had
Messages postés
19
Date d'inscription
samedi 2 octobre 2010
Statut
Membre
Dernière intervention
19 décembre 2012
-
21 nov. 2011 à 09:19
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 - 21 nov. 2011 à 13:15
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 - 21 nov. 2011 à 13:15
2 réponses
Utilisateur anonyme
21 nov. 2011 à 10:12
21 nov. 2011 à 10:12
Salut,
je ne connais pas le corps de la fonction rand originale mais tu peux te servir de ça :
#define IA 16807
#define IM 2147483647
#define AM (1.0f/IM)
#define IQ 127773
#define IR 2836
#define NTAB 32
#define NDIV (1+(IM-1)/NTAB)
#define EPS 1.2e-7f
#define RNMX (1.0f-EPS)
float ran1(long *idum)
{
int j;
long k;
static long iy=0;
static long iv[NTAB];
float temp;
if (*idum <= 0 || !iy) {
if (-(*idum) < 1) *idum=1;
else *idum = -(*idum);
for (j=NTAB+7;j>=0;j--) {
k=(*idum)/IQ;
*idum=IA*(*idum-k*IQ)-IR*k;
if (*idum < 0) *idum += IM;
if (j < NTAB) iv[j] = *idum;
}
iy=iv[0];
}
k=(*idum)/IQ;
*idum=IA*(*idum-k*IQ)-IR*k;
if (*idum < 0) *idum += IM;
j=iy/NDIV;
iy=iv[j];
iv[j] = *idum;
if ((temp=AM*iy) > RNMX) return RNMX;
else return temp;
}
#undef IA
#undef IM
#undef AM
#undef IQ
#undef IR
#undef NTAB
#undef NDIV
#undef EPS
#undef RNMX
->
static long i_time;
static time_t tt;
i_time = -((long)time(&tt));
ran1(&i_time)
je ne connais pas le corps de la fonction rand originale mais tu peux te servir de ça :
#define IA 16807
#define IM 2147483647
#define AM (1.0f/IM)
#define IQ 127773
#define IR 2836
#define NTAB 32
#define NDIV (1+(IM-1)/NTAB)
#define EPS 1.2e-7f
#define RNMX (1.0f-EPS)
float ran1(long *idum)
{
int j;
long k;
static long iy=0;
static long iv[NTAB];
float temp;
if (*idum <= 0 || !iy) {
if (-(*idum) < 1) *idum=1;
else *idum = -(*idum);
for (j=NTAB+7;j>=0;j--) {
k=(*idum)/IQ;
*idum=IA*(*idum-k*IQ)-IR*k;
if (*idum < 0) *idum += IM;
if (j < NTAB) iv[j] = *idum;
}
iy=iv[0];
}
k=(*idum)/IQ;
*idum=IA*(*idum-k*IQ)-IR*k;
if (*idum < 0) *idum += IM;
j=iy/NDIV;
iy=iv[j];
iv[j] = *idum;
if ((temp=AM*iy) > RNMX) return RNMX;
else return temp;
}
#undef IA
#undef IM
#undef AM
#undef IQ
#undef IR
#undef NTAB
#undef NDIV
#undef EPS
#undef RNMX
->
static long i_time;
static time_t tt;
i_time = -((long)time(&tt));
ran1(&i_time)
vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
316
Modifié par vordano le 21/11/2011 à 10:20
Modifié par vordano le 21/11/2011 à 10:20
c'est si dur que ca de taper c++ fonction rand sur google ???
en plus la vrai fonction rand tiens sur quelques lignes
en plus la vrai fonction rand tiens sur quelques lignes
vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
316
21 nov. 2011 à 10:30
21 nov. 2011 à 10:30
ah ca c'est pas bête...
http://www.siteduzero.com/tutoriel-3-248224-l-aleatoire-en-c-et-c-se-servir-de-rand.html
http://www.siteduzero.com/tutoriel-3-248224-l-aleatoire-en-c-et-c-se-servir-de-rand.html
vordano
Messages postés
1682
Date d'inscription
mardi 12 juillet 2011
Statut
Membre
Dernière intervention
20 juillet 2012
316
21 nov. 2011 à 13:15
21 nov. 2011 à 13:15
ben si tu avais parcouru la page tu y aurais vu le code...
21 nov. 2011 à 13:13