Fonction rand() : nombre positifs et négaifs ??? [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
3 avril 2005
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour tout le monde. Après de nombreuses recherches, je ne trouve toujours pas le moyen de générer une suite de nombre >0 et <0 à l'aide de la fonction rand. Est-ce que quelqu'un pourrait me renseigner sur l'utilisation de cette fonction , me donner l'adresse d'un tuto sur cette fonction où me dire comment est-ce que je dois m'y prendre ?
Merci d'avance.

13 réponses

Messages postés
231
Date d'inscription
mercredi 12 février 2003
Statut
Membre
Dernière intervention
7 juillet 2009

Si tu veux obtenir un rang d'un nombre compris entre 1000 et -1000, tu
n'a cas générer un nombre entre 0 et 2000, si celui est supérieur à
1000, il faut le soustraire de 1000.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
peux tu faire réponse accèptée stp

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

(rand() % 2000) - 1000

ne retourne pas toujours un nombre négatif ...
imagine que (rand() % 2000) renvoie 1345
1345 - 1000 = 345 (positif)

pour toutes les valeurs suppérieurs à 999, tu
auras des valeurs positives

au fait, dans les deux cas, tu n'a qu'une variable
mes macros peuvent ce traduire de cette facon:

#define rand_neg(x) ( (int) -(rand() % (int)x) )
int value = rand_neg(1000);

c'est la même chose que:
int value = (int) -(rand() % 1000);

une variable seulement et de plus, ma méthode
t'assure un nombre négatif ...

~(.:: NitRic ::.)~
Messages postés
4
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
3 avril 2005

x = rand() % 2000 + 1 de cette facon ? non cela me donne des nombres entre 0 et 2000 moi j'aimerais avoir vraiment tous les nombres positifs et négatifs sans restrictions... Sais-tu comment faire ?
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

#include <time.h>
#include <stdio.h>

#define rand_neg(x) ( (int) -(rand() % (int)x) ) /* - */
#define rand_pos(x) ( (int) (rand() % (int)x) ) /* + */

int main()
{

int a, b, c;

srand(time(0));
for ( a = 0; a < 50; a++ )
{
b = rand_neg(1000);
c = rand_pos(1000);

printf("negatif: %d\npositif: %d\n", b, c);
}

return 0;
}

~(.:: NitRic ::.)~
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
salut

et ceci :

(rand() %2000)-1000




In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

Messages postés
4
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
3 avril 2005

Thanks pour les réponses! Thks Nitric et Hades53. En fait je voulais stoker le résultat dans une seule variable donc la méthode de coucou747 est parfaite. Merci encore.
Ciao.
MrDaryX.
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

Okay, je viens de relire et c'est bon: (rand() % 2000) -1000
Oui, comme j'ai dis, tu auras des valeurs positives mais aussi
négatives, c'est ce que tu voulais je crois mais, les deux méthodes
fonctionne, si tu veux quelque chose d'aléatoire(+/-) alors la méthode
de coucou747 convient à ton problème.

Désolé, j'ai été un peu trop rapide à conclure et n'ai pas pris le temps
de bien comprendre/étudier le problème.

~(.:: NitRic ::.)~
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
lol

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

coucou747, pourquoi tu rigole? il n'y à rien de drôle

~(.:: NitRic ::.)~
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
c'est pe nerveux...



regarde la simplicitée de ma réponse et sa justesse comparé aux votres...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

heu ... tu ne vois pas les `smiles` dans ton navigateur ???

~(.:: NitRic ::.)~
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
sisi, mais je ne les utilises jamais...
mon nav c'est Mozilla, alors stp, il suporte !


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy