Rechercher : dans
Par :

Genere un nombre reel aleatoire en C

Dernière réponse le 3 jun 2009 à 10:39:56 wisse, le 2 jun 2009 à 17:32:25 
 Signaler ce message aux modérateurs

Bonjour,
slt je cherche a genere un nombre aleatoire reel suiavnt la loi uniforme entre [0,1] en C ,
j essyer avec ca mais ca marche pas ( il affiche uniquement j=0):


float j;
srand(time(null));
j=rand()/RAND_MAX+1.0;

deja le mot RAND_MAX je sais pas ce que il veut dire ici . a ce que c juste l'instruction qui est comme ca ou c une valeur que je doit entree .
alors merci de bein vouloir m'aidé

Configuration: Windows XP
Firefox 1.5.0.9

Meilleures réponses pour « genere un nombre reel aleatoire en C » dans :
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Les bases pour référencer votre site professionnel facilement VoirLes bases pour référencer son site professionnel facilement Avoir un site Internet c'est bien mais faire en sorte qu'il attire un grand nombre de visiteurs c'est indispensable ! En effet, le Web abrite une quantité colossale de contenus et sortir...
Les tableaux en langage C++ VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...

1

Nabla's, le 2 jun 2009 à 17:39:33
  • +2

http://www.cplusplus.com/reference/clibrary/cstdlib/rand/

randmax est une constante définie dans cstdlib et qui est au moin égale à 32676


si tu veux un nombre entre 0 et 1, je te conseilles de faire
j=(float) rand / RAND_MAX ; gagnons du temps: lisez attentivement toutes les réponses à ­vos questions!
tu n'aimes pas les réponses techniques? Je n'aime pas les SM­S. Faisons un effort ....

Répondre à Nabla's

2

wisse, le 2 jun 2009 à 17:58:02

Slt merci pour une reponse aussi rapide, j ai modifier l'algo mais il me sort des valeurs trestrestres grand en plus des fois elle sont negative

Répondre à wisse

3

Nabla's, le 2 jun 2009 à 18:02:13

J= (rand() % 1000)/(float)1000
ca donne quoi ? la precision est au milième, masi tu peux augmenter gagnons du temps: lisez attentivement toutes les réponses à ­vos questions!
tu n'aimes pas les réponses techniques? Je n'aime pas les SM­S. Faisons un effort ....

Répondre à Nabla's

4

wisse, le 2 jun 2009 à 18:11:48

Re slt
il donne des valeur assez grande en plus sans virgule exemple (-2147483648,126846879....ect)

Répondre à wisse

5

wisse, le 2 jun 2009 à 18:22:16

Ok merci ca marche ,
c moi qui a fait une erreur
merci pour ta reponse rapide

Répondre à wisse

6

wisse, le 2 jun 2009 à 18:45:00

Slt juste une petite quastion les valeur de 0 et sont elle inclus ou pas ???

Répondre à wisse

7

Nabla's, le 3 jun 2009 à 09:10:15

Avec le 2°, le 0 est inclu, mais pas le 1. Si tu veux veux le 1, il faut remplacer le premier 1000 par 1001 gagnons du temps: lisez attentivement toutes les réponses à ­vos questions!
tu n'aimes pas les réponses techniques? Je n'aime pas les SM­S. Faisons un effort ....

Répondre à Nabla's

8

Char Snipeur, le 3 jun 2009 à 09:21:48

Salut.
Juste pour dire que selon l'utilisation rechercher, le modulo ce n'est pas bien. En particulier pour les applications scientifiques qui nécessitent une distribution réellement uniforme.
Prenons comme exemple un dé allant de 0 à 5, et que nous désirions avoir une valeur aléatoire entre 0 et 4.
Si nous faisons valeur_du_dé%5 pour avoir cettevaleur aléatoire, nous avons une probabilité de 1/6 d'avoir les nombres 1 2 3 4, mais une probabilité de 1/3 d'avoir 0 car 1/6 d'avoir 0 et 1/6 d'avoir 5 qui donne 0 grâce au modulo. 0 a donc plus de chance de sortir.
Le bonne façon de calibrer une variable aléatoire pour qu'elle rentre dans un domaine donné est de faire une règle de 3 en divisant par la valeur maxi de la variable et en multipliant par la valeur maxi que l'on veux. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

9

Nabla's, le 3 jun 2009 à 09:28:55

C'est vrai, je suis entierement d'accord, le dernier nombre risque de sortir un peu moins souvent

ceci dit, pour une utilisation scientifique, tu ne prendra pas non plus la fonction rand de base du C, car comme tu le vois dans cette exemple, on l'initialise généralement sur l'heure courante, et ce n'est pas vraiment top pour faire de l'aléatoire... De toute manière, l'aléatoire en informatique n'existe pas (ce serait inquiétant), on parle plus généralement de pseudo-aléatoire gagnons du temps: lisez attentivement toutes les réponses à ­vos questions!
tu n'aimes pas les réponses techniques? Je n'aime pas les SM­S. Faisons un effort ....

Répondre à Nabla's

10

Char Snipeur, le 3 jun 2009 à 10:23:36

C'est vrai Nabla's. Mais le rand() suffit dans bien des cas.
Par exemple en simu monte carlos de diffusion. Mais la densité de probabilité est très importante, le modulo la modifie, alors que dans le générateur pseudo aléatoire elle est tout de même bien respecté.
Ou pour être plus imagé, dans les cas où rand() est suffisant, rand()%x donnera de mauvais résultats.
Je pense que ça doit s'en resentir aussi si tu fait des math. Salutation ! (il faut bien que vous compreniez que j'ai TOUJ­OURS raison)
Char Snipeur

Répondre à Char Snipeur

11

 Nabla's, le 3 jun 2009 à 10:39:56

Ou si tu montes un jeux de casino en ligne, géré en C ;) gagnons du temps: lisez attentivement toutes les réponses à ­vos questions!
tu n'aimes pas les réponses techniques? Je n'aime pas les SM­S. Faisons un effort ....

Répondre à Nabla's
Collection CommentÇaMarche.net