Entier Aléatoire C.H

Bonjour, j'ai un petit problème de timing en C, je m'explique. Voilà le bout code important de ma fonction main: for(i=0;i<32;i++){ r = hasard(); t = r; while(r==t){ r = hasard(); printf("%d\n", r);} if(r>t) ech(pak, t, r); else ech(pak, r, t);} En gros, je veux tirer deux nombres aléatoires differents au moyen de ma fonction hasard(). Comment générer un int aléatoire en C?. La voici: int hasard(){ int r, i; srand (time (NULL)); r = 1+(int)((double)rand()*(32)/(RAND_MAX+1)); return r;} C'est une fonction de génération d'un entier aléatoire entre 1 et 32 tout ce qu'il y a de plus classique. Le problème vient, je pense, de srand qui se base sur l'horloge. Ainsi, quand je rentre dans ma boucle, le nombre aléatoire reste le même pendant 1 seconde ce ralenti mon programme. Que dois-je faire?

Entier Aléatoire C.S

16 novembre 2013 à 17:33:44 oui mais pour un nombres entre 1-9 je vois pas l'interet que ça apporte pour un simple programme, et il précise bien créer un générateur classique en 'C' donc srand() suffit aprés tout dépend de ce qu'il veux dire par classique si c'est classique pur hazard oui mais dans le cas contraires srand suffis;) 16 novembre 2013 à 20:30:09 poupou9779 a écrit: Si tu ne veux pas prendre en compte ce que je dis... Tant pis... je prend en compte de tes remarque et j'approuve mais franchement pour un nombre (1-9) le speudo-aléatoire suffit, la question que l'on doit ce posée est je veux du nombre strictement aléatoire oui ou nom, aprés que chacun fait sont choix. [Résolu] Générer 2 nombres aléatoire entre 1 et 10 en C - [Besoin d'aide] par NiabruJunior - OpenClassrooms. ;) 16 novembre 2013 à 23:26:23 Ce que je propose, c'est du pseudo-aléatoire. Il n'y a pas de véritable aléatoire. Je dis juste qu'il faut limiter les appels à srand si on veut une suite de nombre non-égaux générée. 16 novembre 2013 à 23:32:16 UnixX a écrit: je prend en compte de tes remarque et j'approuve mais franchement pour un nombre (1-9) le speudo-aléatoire suffit, la question que l'on doit ce posée est je veux du nombre strictement aléatoire oui ou nom, aprés que chacun fait sont choix Tu n'as pas compris à quoi correspond srand.

Nous retrouvons dans le cas le même problème d'initialisation de la série aléatoire que précédemment avec rand(). Pour initialiser la série, il faut fournir un paramètre au moteur de génération. Par exemple le temps. Si vous voulez le faire avec la bibliothèque chrono (standard C++11), voici le code à écrire, en n'oubliant pas l'include: #include Enfin, pour simplifier les tirages, on peut utiliser bind (standard). Voici le code à écrire, ne pas oublier l'include #include . Ce code n'apporte rien au tirage lui-même, mais peut vous simplifier la vie pour les appels. Finissons avec une implémentation d'une classe Dé à 6 faces. Nombres Aléatoires. Faites rouler le dé et vous obtenez un tirage aléatoire 😉 Conclusion D'un façon générale, la bibliothèque random du C++11 est bien meilleure en terme d'aléatoire que la bonne vieille fonction rand(). Mais elle propose surtout beaucoup plus de possibilités de paramétrage. En utilisant ce qui est déjà configuré en terme de moteur et de distribution, vous avez de quoi couvrir pas mal de besoins.

Entier Aléatoire C P

Les nombres générés sur ordinateur sont toujours pseudo aléatoires, même en initialisant l'algo de génération avec une graine aléatoire. Par contre, si tu ne le fais pas, tu as les même résultats à chaque intialisation du programme, et si tu le fait avant chaque génération de nombre, tu n'as plus un nombre aléatoire mais une fonction de la seconde courante, ce qui n'est pas très utile si tu comptes générer plusieurs nombres par seconde. 17 novembre 2013 à 1:45:09 résum:je disait juste que pour un nombre entre 1-9 la forme simple peut etre utilisé sachant que le dés est pipé car même si on procede comme tu la dit, il est fort possible de tomber sur les même dés, mais ta remarque est bonne et je suis d'accord avec toi, comme tu la fait plus haut, il faut modifier le seed et donc appeler srand à chaque démarrage du programme avec un autre seed différents ok dans ce cas no comment. Entier aléatoire c p. mais je fais mon rabajoie allons un peut plus loin je ne suis pas un bon matheux mais prenon la formule Xn+1=(a*xn+b)%c dans le cas ou b est nul (0) ont fait comment?, et si on veux des séquences toujours différente?.

Dans ce tutoriel, nous allons voir comment générer n nombres aléatoires. En C++, la fonction rand() fait partie de la bibliothèque stdlib, n'oubliez pas d'importer cette bibliothèque. D'abord, il faut initialiser la position avec la fonction time() qui renvoie le durée écoulée en secondes depuis le premier janvier 1970, sinon la séquence générée serait la même à chaque fois. On a choisi de générer des nombres entre deux bornes, inférieur et supérieur. Les nombres renvoyés font partis de l'intervalle [a, b] où a est la borne inférieur et b et la borne supérieur. Il suffit de tirer un nombre puis le multiplier par (b-a+1) et diviser le total sur RAND_MAX qui est la valeur maximale retournée par la fonction rand(). #include #include #include int Rand( int a, int b) { int nRand; nRand= a + (int)((float)rand() * (b-a+1) / (RAND_MAX-1)); return nRand;} int main() int i; srand((unsigned)time(0)); for (i=0; i<10; i++) printf("nRand[%d]=%d\n", i, Rand(-100, 100));} return 0;} Sortie: Références: Openclassrooms: l'aléatoire en C et C++ time.

Entier Aléatoire C Plus

"That is not dead which can eternal lie And with strange aeons even death may die" The Call of Cthulhu 15/03/2007, 10h52 #3 Selon la FAQ: Je voudrais juste préciser qu'il suffit d'initialiser le générateur de nombres pseudo-aléatoires une seule fois avant que la fonction rand() ne soit appelée. Thierry "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located. ", Donald Knuth "If the only tool you have is a hammer, every problem looks like a nail. ", probably Abraham Maslow FAQ-Python FAQ-C FAQ-C++ + 15/03/2007, 13h34 #4 Le code que tu proposes est sans doute fait à titre d'exemple, car tel qu'il est il ne sert à rien puisque le tableau que tu remplis est local à la fonction. Publication: Concepts en C Mon avatar: Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile? Entier aléatoire c.s. Remerciez son auteur en cliquant le pouce vert! 15/03/2007, 16h12 #5 Envoyé par Nyarlathotep le petit problème est qu'il faut utiliser srand avant rand.

0 * ( double) rand () / ( double) RAND_MAX); "Un homme sage ne croit que la moitié de ce qu'il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques #10 Bah, tu as lu mon article? 16/03/2007, 00h13 #11 C'est ok 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 draw = draw = ( int) ( 100. 0 * ( double) rand () / ( double) RAND_MAX); Merci beaucoup. + Répondre à la discussion Cette discussion est résolue.