Srand(time(NULL)) accéléré???

Fermé
guitoontruant Messages postés 315 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 26 août 2011 - 12 déc. 2007 à 15:21
guitoontruant Messages postés 315 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 26 août 2011 - 12 déc. 2007 à 17:01
Bonjour,

J'ai créé une fonction aléatoire grace à srand(time(NULL)); mais je voudrais qu'il augmente sa fréquence de calcul.

Est-ce possible?
A voir également:

3 réponses

blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
12 déc. 2007 à 16:06
Salut,

qu'entends-tu par augmenter la fréquence de calcul ? aller plus vite ?
0
guitoontruant Messages postés 315 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 26 août 2011 53
12 déc. 2007 à 16:13
Oui, c'est ça, car j'ai besoin d'effectuer un calcuol statistique en faisant varier les coordonnées des points à l'intérieur d'un cercle.

Seulement mon programme s'effectue trop rapidement et les valeurs données par ma fonction aléatoire sont finalemnt toujours les mêmes.
0
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
12 déc. 2007 à 16:30
J'ai pas trop compris ta demande : tu veux aller plus vite ou avoir d'autres valeurs ?

Tu as un échantillon de combien pour tomber sur les mêmes valeur ? ou alors c'est ton time(null) qui ne renvoie pas une valeur correcte au srand...
0
guitoontruant Messages postés 315 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 26 août 2011 53
12 déc. 2007 à 16:35
J'ai testé mon srand à part, il fonctionne bien si on lui fait une demande bien espacé dans le temps.

J'ai ça:

int aleat()
{
int ch1;
srand (time (NULL));
ch1=rand()%2;
if(ch1==0)
ch1=-1;
return ch1;
}

int aleatbis()
{
int ch2;
srand(time (NULL));
ch2=rand()%100;
return ch2;
}

[...]
a1[0]=amax[0];
a1[1]=amax[1];
negoupos=aleat();
random=aleatbis();
random/=100;
printf("%d %f",negoupos,random);
a1[0]=a1[0]+(negoupos*random*inca);
negoupos=aleat();
random=aleatbis();
random/=100;
a1[1]=a1[1]+(negoupos*random*inca);

Seulement, mes fonctions aleat et aleatbis renvoit la même chose car je suppose que mon programme va plus vite que mon srand
0
blux Messages postés 26450 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 novembre 2024 3 312
12 déc. 2007 à 16:57
Moi je n'initialiserai pas ma fonction rand à chaque appel, mais au début du programme, me contentant d'en lire les valeurs dans les fonctions... c'est peut-être ça qui coince, elle sont initialisées avec la même valeur.

Ce n'est pas ton programme qui va plus vite que ton rand, c'est ton programme qui s'exécute dans la même fraction de time... Tu as peut-être accès à la msec voir à la µsec en C...
0
guitoontruant Messages postés 315 Date d'inscription dimanche 7 janvier 2007 Statut Membre Dernière intervention 26 août 2011 53
12 déc. 2007 à 17:01
OK je vais essayer demain et je te dirai quoi.

En tout cas, merci beaucoup.
0