Rand() dans c++

Résolu
Bonjour,
je suis en train de programmer en c++ avec dev-c++, et lorsque j'utilise la fonction rand() pour générer
des nombres aléatoires la valeur max (RAND_MAX)que la germe peut donner correspond au max de type short 32767, et donc je ne peut pas générer des nombres supperieure à 32767, merci de m'aider si vous connaissez une solution, à plus.
Configuration: Windows XP
Internet Explorer 8.0

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,
    Il n'existe pas de solutions standards. A toi de te faire la fonction.
    Si RAND_MAX vaut 32767, tu sauvegardes le résultat de rand dans une variable, tu lui fais subir une rotation à droite de 15 bits et tu raditionnes avec rand.
    Ce qui donne pour un long long par exemple :
    long long toto=rand();
    toto<<=15;
    toto+=rand();

    Cdlt
    1. Contributeur
      Question con : et si tu les multiplies ?
      1. Contributeur
        La multiplication ne permettra pas une répartition équiprobable.
    2. salut, merci tous les deux pour vos réponses, de la manipulation je sais faire,mais ce que je voulais savoir c'est est ce que il existe une instruction (fonction , mot clé) en c++ qui permet de modifier la fonction rand(), mais sa n'existe pas. merci encore une fois, et à plus.
      1. Contributeur
        ça dépend ce que tu entends par modifier.
        Il y a srand() qui permet de modifier la suite pseudo aléatoire.
    3. salut, merci mon ami pour votre réponse, ce que je voulais savoir si par exemple on peut faire rand(double)
      pour générer directement des nombres réels peudo-aliatoires, mais je pense que ça n'existe pas, la seule methode c'est de faire de la gymnastique,et merci encore pour l'information sur srand(), et au revoir.