2010-08-01 8 views
0

OK Je dois créer un nombre aléatoire égal entre 54 et 212 inclus. Le seul hic, c'est que cela doit être fait dans une seule déclaration. J'ai une classe pour générer un nombre aléatoire dans une plage, mais comme je l'ai dit, je veux le faire dans une seule déclaration. Je suis arrivé avec ça, mais ça ne fonctionne pas correctement. Des idées?Créer un nombre pair aléatoire entre plage

int main() 
{ 

    srand(time(NULL)); 
    int i; 

    i = (rand() % 106) * 2; 

    cout << i; 


    return 0; 
} 
+0

Est-ce une sorte de un devoir? –

+0

Pourquoi voulez-vous faire cela dans une seule déclaration? Est-ce que ce sont les devoirs? – kerkeslager

Répondre

9

Générer un nombre dans l'intervalle [27, 106] et multipliez par 2. Votre problème est que vous n'avez pas minoration.

int i = 2 * (27 + rand() % (106 - 27 + 1)) 

En général, pour générer un nombre aléatoire dans [a, b] utilisation:

int i = a + rand() % (b - a + 1) 

Pour voir pourquoi cela fonctionne, essayez des exemples simples tels que [2, 4], [3, 7] etc.

+0

merci, cela a bien fonctionné – user69514

+0

@ user69514: Vous devez accepter la réponse si cela fonctionne! – jigfox

+0

Pouvez-vous s'il vous plaît expliquer la logique? –

Questions connexes