le random prévisible [C/UNIX] - Programmation
Marsh Posté le 30-04-2001 à 21:32:46
Titoine42 a écrit a écrit : 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());
Marsh Posté le 30-04-2001 à 21:44:09
Voir l'ancien topic, si cela peut t'aider :
http://forum.hardware.fr/sqlforum/ [...] inc&cache=
Salutations
Marsh Posté le 30-04-2001 à 22:34:16
tfj57> Merci !
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.
Marsh Posté le 30-04-2001 à 22:46:13
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.
Marsh Posté le 01-05-2001 à 01:01:10
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".
Marsh Posté le 30-04-2001 à 21:19:02
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.
[edit]--Message édité par Titoine42--[/edit]