2011-02-02 5 views
0

Je veux générer 2 nombres aléatoires entre 0 et 20générer des nombres aléatoires en C

int one = rand() % 20; 

il me donne une valeur constante i.e. 1 ...

Suis-je manque quelque chose?

+0

Qu'est-ce que 'count'? – SLaks

+0

compte est une variable ... –

+0

Votre code fonctionne très bien. http://www.ideone.com/52L8O – SLaks

Répondre

2

Vous devez donner une graine au nombre aléatoire.

srand(time(NULL)); 
int num1 = rand() % count; 


int num2 = rand() % count; 

nombre aléatoire entre 1 et 20

int num = rand() % 20 ; 

if(num == 0) 
    num += 2; 

else if(num == 1) 
    ++num ; 
+1

Non, vous n'avez pas besoin de. – SLaks

+0

Que faire si je veux un nombre aléatoire compris entre 1 et 20? –

+2

http://pubs.opengroup.org/onlinepubs/009695399/functions/rand.html 'Si rand() est appelé avant que les appels à srand() ne soient faits, la même séquence doit être générée comme lorsque srand() est premier appelé avec une valeur de départ de 1. – SLaks

2

Cela se passerait-il si count est un.
Si count n'est pas un, votre code works perfectly. Toutefois, comme mentionné, vous devez définir une graine non déterministe en appelant srand.

+3

Vinod K veut probablement des nombres aléatoires différents chaque fois qu'il exécute son programme. Dans ce cas, il devrait définitivement l'utiliser en utilisant srand. –

1

Pour générer un nombre aléatoire dans une plage spécifiée [min, max], faire quelque chose comme:

min + (int)((double) rand()/RAND_MAX * (max - min + 1)); 

La méthode

min + rand() % (max - min + 1); 

peut être plus rapide, mais il ne peut pas donner vous une distribution normale des valeurs en fonction du RNG.

Et comme d'autres l'ont déjà dit, si vous voulez une séquence différente pour chaque course, exécuter srandune fois au début du programme.

Questions connexes