Tu peux rester au généteur 16-bits standard, mais à mon avis, il te manque un appel à srand().
PS: Pas besoin de le faire à chaque tirage, c'est trop coûteux. Le faire une fois au début suffit amplement ! Et après, tu fais des "rand() % MY_MAX_VALUE".
R@NNIS
#include <stdlib.h>
int my_rand(int n)
{
int value;
srand(time(0));
value = (rand()%n);
return (value);
}
[edit]--Message édité par R@NNIS--[/edit]
Titoine42
Je fais entre 2000 et 5000 tirages mais je veux un nombre entre 1 et 4 chiffres maxi.
Je precise que le tout doit etre le plus rapide possible.
En fait, c'est pour le positionnement aleatoire de ressources pour une sorte de jeu de strategie.
BifaceMcLeOD
tfj57> Merci ! :jap:
Titoine42> Tu fais combien de tirages aléatoires ? Si c'est peu, alors c'est parce que tu ne fais pas "srand(getpid())" ou (plus courant) "srand(time())". Si c'est beaucoup au moin 5000 ou 10 000, alors il faut que tu changes de générateur aléatoire.
Comment faire un random qui soit dans une fourchette de valeurs relativement faibles et que les resultats ne soient pas cycliques.
J'ai tenté de faire random() divise par une constante (pour avoir plus de chance de tomber dans ma fourchette) mais je retrouve les mêmes séquences a chaque execution de mon programme.
Il faut que initialise la séquence avec une valeur à toi (et qui change bien sûr) . Généralement on prend l'heure ou le pid du process comme seed.
Ex : srand(getpid());
Titoine42
Comment faire un random qui soit dans une fourchette de valeurs relativement faibles et que les resultats ne soient pas cycliques.
J'ai tenté de faire random() divise par une constante (pour avoir plus de chance de tomber dans ma fourchette) mais je retrouve les mêmes séquences a chaque execution de mon programme.