November 22, 200322 yr Est-ce que quelqu'un sait comment faire pour sortir un nombre aléatoire entre 1 et 6 en C++ ?
November 22, 200322 yr La réponse est : oui. rand() te renvoie un float entre 0 et 1. Donc quelque chose comme : (int) (rand() * 5 +1) devrait marcher
November 22, 200322 yr Author Oui , mais rand renvoie un float , donc si si je déclare ma variable utilisant le rand comme un int , est-ce que ca va forcer et transfomer le float en int ?(en prenant la partie entière)
November 23, 200322 yr Author euh ,désolé , je commence le C++ , donc le cast je sais pas du tout ce que c'est , désolé
November 23, 200322 yr C'est ce qui permet de faire rentrer des carrés dans des ronds En clair, si tu as un float X, en faisant Y = (int) X , tu obtiens un Y qui est de type int. Le programme change le type à la volée (cast dynamique). Par contre il aut faire très attention avec le cast, parce qu'évidemment quand les deux types ne sont pas les mêmes, il y a forcément des règles de conversion qui sont appliquées, et qui peuvent produire des résultats inattendus.
November 24, 200322 yr Un article intéressant sur les nombres aléatoires : http://prografix.games-creators.org/document/181
December 11, 200322 yr Pour éviter les cast, tu peut aussi utiliser suivant les besoins round(), floor() et ceil(). Sinon je te conseille quelque chose comme : 1ere version : utiliser le modulo d'un très grand nombre. Vu la différence entre RANDMAX et 6, les approximations de la division euclidiènne sont négligeables. random()%6+1; 2ieme version : 1 seule fois au début (le temps permet d'avoir une variable pseudo aléatoire). srandom(time(NULL)); Dans ta boucle x=(int)(6*(random())/RAND_MAX); Ce qui permet de ne plus avoir d'approximation mais n'est utile que pour les grandes itérations en proba.
Archived
This topic is now archived and is closed to further replies.