Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1753 connectés 

  FORUM HardWare.fr
  Programmation

  [C/UNIX] le random prévisible

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/UNIX] le random prévisible

n°28600
Titoine42
Posté le 30-04-2001 à 21:19:02  profilanswer
 

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]

mood
Publicité
Posté le 30-04-2001 à 21:19:02  profilanswer
 

n°28605
zop
1 world, 1 web, 1 Windows
Posté le 30-04-2001 à 21:32:46  profilanswer
 

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());

n°28607
tfj57
Posté le 30-04-2001 à 21:44:09  profilanswer
 

Voir l'ancien topic, si cela peut t'aider :
 
http://forum.hardware.fr/sqlforum/ [...] inc&cache=
 
Salutations

n°28610
BifaceMcLe​OD
The HighGlandeur
Posté le 30-04-2001 à 22:34:16  profilanswer
 

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.

n°28611
Titoine42
Posté le 30-04-2001 à 22:46:13  profilanswer
 

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.

n°28620
R@NNIS
Tout est possible ou presque.
Posté le 01-05-2001 à 00:26:59  profilanswer
 

#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]


---------------
Mes News
n°28622
BifaceMcLe​OD
The HighGlandeur
Posté le 01-05-2001 à 01:01:10  profilanswer
 

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".

n°28638
R@NNIS
Tout est possible ou presque.
Posté le 01-05-2001 à 12:28:09  profilanswer
 

ca c est clair sinon c est bien lent ...


---------------
Mes News
n°28642
Titoine42
Posté le 01-05-2001 à 13:04:53  profilanswer
 

Super! Ca fonctionne! :bounce:
 
merci a tous :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C/UNIX] le random prévisible

 

Sujets relatifs
un emulateur de terminal sous windows (style ceux qu il ya sous Unix)[C/UNIX]lancer une application dans un nouveau term ...
[SHELL UNIX] Comment virer une chaine dans un fichier ?question sur les message queue (UNIX) posix 1003.1b
[UNIX KSH] Comparaison de caractèresFichier texte UNIX/Windows
Migration UNIX sous NT : U R G E N TCa existe un editeur de texte potable sous Unix ?
La date sous Unixprogrammation système unix
Plus de sujets relatifs à : [C/UNIX] le random prévisible


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR