Vous n'êtes pas identifié.
Bon j'ai compris comment ca marchait :
rand();
Cela renvoie un nombre entre 0 et 32767
Mais il faut un point de départ différent pour ne pas avoir toujours le même nombre!
Qu'est ce que je peux utiliser de bien pour srand();, point de départ de la séquence de nombres ? Il faut que cela soit le plus aléatoire possible.
Jusqu'a maintenant, j'ai essayé avec les minutes puis les secondes mais ca ne me convaint pas vraiment pour le systeme aléatoire.
(j'utilise la fonction de la librairie get_time de casio2.h)
Vous devez avoir une technique non?
voila le code :
main ()
{
int alea=0,nfond=0,tval=0;
tval=get_time(3)*10;
srand(tval);
alea=rand();
if(alea<10922)nf=0; // 1/3
if(alea<=21844 && alea>=10922)nf=1; // 1/3
if(alea>21844)nf=2; // 1/3
printf("%i",alea);
getch();
return(0);
}
Merci
Hors ligne
srand est une fonction qui pompe pas mal de code alors moi j'fait ça:
unsigned char time_s; // Randomize pas cher asm in al, 0x1D; asm mov time_s, al for(; time_s; time_s--) { rand(); }
Hors ligne
Moi j'ai ça:
static ulong rand_next = 1; void Randomize() { uchar sec,min,hr; asm { in al,0x1D mov sec,al in al,0x1E mov min,al in al,0x1F mov hr,al } rand_next = ((ulong)sec)<<16 + ((ulong)hr)<<8 + min; } uint Random(uint max) { rand_next = rand_next * 1103515245 + 12345; return ((ulong) (rand_next / 0x10000) * max) >> 16; }
Hors ligne
ail moi qui était fier de ma fonction ran je fais moins le malin. (non sans dec, j'ai toujours su que c'était de la merde).
Bon je vais étudier vos petits bijoux.
Hors ligne