Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1112 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème avec rand()

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

problème avec rand()

n°884224
olemoine14
Posté le 27-10-2004 à 18:49:34  profilanswer
 

Bonjour,
 
Dans mon programme, je veux afficher 20 fois une valeur choisie aléatoirement entre 0 et 50. J'utilise la fonction rand() et elle me donne 20 fois la même valeur alors que je voudrais 20 valeurs différentes.
De plus, quand je compile, le warning suivant s'affiche dans mon shell :
"no new line at end of file", je ne comprends pas pourquoi.
 
Voici le programme :
 
/* Fichier nombre.c   */
//----------------------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
//----------------------------------------------------------------------
 
int main()
{
   int nb,i;
   
   for(i=0;i<20;i++)
   {
     srand(time(NULL));
     nb = rand() % 50;
     printf("%d",nb);
   }
   return 0;
}
 
 
Pouvez-vous me donner quelques conseils pour résoudre ce problème ?
 
Cordialement

mood
Publicité
Posté le 27-10-2004 à 18:49:34  profilanswer
 

n°884225
Taz
bisounours-codeur
Posté le 27-10-2004 à 18:50:36  profilanswer
 

... va prendre ton dictionnaire et recherche la définition du mot 'initialiser'

n°884235
olemoine14
Posté le 27-10-2004 à 18:54:37  profilanswer
 


Je suis d'accord mais quand j'initialise mes deux variables i et nb, c'est exactement le même résultat.

n°884240
_darkalt3_
Proctopathe
Posté le 27-10-2004 à 18:58:50  profilanswer
 

Comme le dit Taz, il faut initialiser le generateur de random.

n°884243
C H A V E ​Z
Quis custodiet ipsos custodes?
Posté le 27-10-2004 à 19:00:10  profilanswer
 

//----------------------------------------------------------------------  
#include <stdlib.h>  
#include <stdio.h>  
#include <time.h>  
//----------------------------------------------------------------------  
 
int main()  
{  
   int nb,i;  
   srand(time(NULL));
   for(i=0;i<20;i++)  
   {  
       
     nb = rand() % 50;  
     printf("%d",nb);
   
   }  
   return 0;  
}


---------------
le roi de l'EDIT oui je sais :o / achète mb-D200
n°884245
C H A V E ​Z
Quis custodiet ipsos custodes?
Posté le 27-10-2004 à 19:00:56  profilanswer
 

ca marchera surement mieux comme ca ;)
bonne soiree.


---------------
le roi de l'EDIT oui je sais :o / achète mb-D200
n°884249
olemoine14
Posté le 27-10-2004 à 19:01:44  profilanswer
 

Pour moi c'est la ligne "srand(time(NULL));" qui initialise le générateur. Il y a-t-il une autre manière pour initialiser le générateur de random ?

n°884250
C H A V E ​Z
Quis custodiet ipsos custodes?
Posté le 27-10-2004 à 19:02:24  profilanswer
 

ton printf change le pour ca  
printf("%d\n",nb);
c'est plus clair ainsi.


---------------
le roi de l'EDIT oui je sais :o / achète mb-D200
n°884255
C H A V E ​Z
Quis custodiet ipsos custodes?
Posté le 27-10-2004 à 19:03:15  profilanswer
 

le code que je t'ai donné marche
test tu verras !!!
srand(time(NULL));  
c'est avant la boucle ;)


---------------
le roi de l'EDIT oui je sais :o / achète mb-D200
n°884258
olemoine14
Posté le 27-10-2004 à 19:03:46  profilanswer
 

Je te remercie CHAVEZ, c'était bien çà le problème.
 
Bonne soirée !  :-)

mood
Publicité
Posté le 27-10-2004 à 19:03:46  profilanswer
 

n°884259
smaragdus
whores, drugs & J.S. Bach
Posté le 27-10-2004 à 19:03:58  profilanswer
 

Ce que Taz t'a cordialement suggéré, c'est qu'une initialisation, ça se fait UNE fois en début de programme et pas à chaque tour de boucle.

n°884260
C H A V E ​Z
Quis custodiet ipsos custodes?
Posté le 27-10-2004 à 19:04:41  profilanswer
 

Smaragdus a écrit :

Ce que Taz t'a cordialement suggéré, c'est qu'une initialisation, ça se fait UNE fois en début de programme et pas à chaque tour de boucle.


 
C-Q-F-D


---------------
le roi de l'EDIT oui je sais :o / achète mb-D200
n°884276
Taz
bisounours-codeur
Posté le 27-10-2004 à 19:16:31  profilanswer
 

rand() % 50;  
 
 
JAMAIS ÇA

n°884278
Taz
bisounours-codeur
Posté le 27-10-2004 à 19:17:05  profilanswer
 
n°884455
blurk
Posté le 27-10-2004 à 22:03:14  profilanswer
 

Intéressant tout ça, mais pourquoi les bits de poids faibles des nombres générés par rand() ont une distribution peu aléatoire ? Ceux de poids forts sont plus aléatoires donc ?

n°884541
Lam's
Profil: bas.
Posté le 27-10-2004 à 22:58:23  profilanswer
 

C'est le nombre tout entier qui est "aléatoire", ni sa partie faible, ni sa partie forte.
 
Exemple classique no1: les randoms qui te donnent tour à tour des entiers pairs et impairs (sisi, ça a existé!). Pas super pour simuler un pilouface.
 
Exemple classique no2: RAND_MAX vaut 30, et tu veux un nombre entre 0 et 19. En faisant un %20, tu as 2 fois plus de chances d'avoir un truc entre 0 et 10 qu'entre 10 et 20.

n°884609
blurk
Posté le 28-10-2004 à 07:22:11  profilanswer
 

OK, je vois à peu près. En fait j'avais entendu parler d'un générateur de nombres aléatoires pas si aléatoires que ça au niveau des bits de poids faibles (ou forts) (sous un vieil Unix).
Donc si j'ai bien compris le but c'est tout simplement d'utiliser tous les bits que rand() nous offre...


Message édité par blurk le 28-10-2004 à 07:23:35
n°887028
viewtiful2
Posté le 31-10-2004 à 14:38:59  profilanswer
 

srand(time(NULL)); toujours au début de programme ou de de la fonction

n°887040
cris56
Posté le 31-10-2004 à 14:47:25  profilanswer
 

pas dans la fonction  :??:

n°887151
viewtiful2
Posté le 31-10-2004 à 17:48:00  profilanswer
 

au début du prog ou au début de la fonction

n°887152
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 17:51:08  profilanswer
 

quand tu parles de "fonction", tu veux bien sûr parler de la fonction d'initialisation ?

n°887159
viewtiful2
Posté le 31-10-2004 à 17:56:34  profilanswer
 

int main()  
{  
   int nb,i;  
   srand(time(NULL));  
   for(i=0;i<20;i++)  
   {  
       
     nb = rand() % 50;  
     printf("%d",nb);  
   
   }  
   return 0;  
}  
 
ou par exemple :
 
void fonction()  
{  
   int nb,i;  
   srand(time(NULL));  
   for(i=0;i<20;i++)  
   {  
       
     nb = rand() % 50;  
     printf("%d",nb);  
   
   }    
}

n°887163
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 17:59:17  profilanswer
 

Faut pas uiliser modulo avec rand(), c'est comme croiser les effluves.

n°887166
cris56
Posté le 31-10-2004 à 17:59:51  profilanswer
 

si ta fonction est appelée plusieurs fois par seconde (ce qui est tres probable :D) ca te sortira toujours les memes nombres

n°887168
viewtiful2
Posté le 31-10-2004 à 18:00:32  profilanswer
 

oki

n°887174
Chronoklaz​m
Posté le 31-10-2004 à 18:03:32  profilanswer
 

Hhhm, si je puis me permettre, de toute façon c'est un générateur de nombres pseudo-aléatoire ... le vrai aléatoire c'est soit le résultat d'une experience impliquant des phénoménes physiques irréversibles soit un nombre proposé "comme ça" par un homme (cad un nombre qui nous passe par la tête, c'est dur à admettre mais c'est ça) et oui nous sommes tous de "vrai" générateurs de nombres aléatoires :)

n°887176
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 18:07:27  profilanswer
 

Petite parenthèse : Le seul moyen de générer un signal véritablement aléatoire (et non seulement chaotique), c'est d'utiliser un phénomène quantique.

n°887177
viewtiful2
Posté le 31-10-2004 à 18:09:16  profilanswer
 

c vrai qu'il faut savoir faire la différence entre pseudo aléatoire et aléatoire.

n°887178
Chronoklaz​m
Posté le 31-10-2004 à 18:11:20  profilanswer
 

Smaragdus, c'est quoi la difference entre "chaotique" et "aléatoire" ?

n°887185
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 18:17:03  profilanswer
 

Un phénomène chaotique est un phénomène dont les trajectoires dans l'espace de phase sont situées autour d'un attracteur (étrange ou non). Les trajectoires des planètes du système solaire ou la météo par exemple.
 
Un phénomène aléatoire n'est régit par aucune loi de prévision. La désintégration beta ou l'expérience de Young par exemple.
 
Cas intermédiaire : La roulette est "presque" aléatoire tellement c'est un chaos compliqué.


Message édité par smaragdus le 31-10-2004 à 18:18:00
n°887195
masklinn
í dag viðrar vel til loftárása
Posté le 31-10-2004 à 18:22:52  profilanswer
 

Smaragdus a écrit :

Petite parenthèse : Le seul moyen de générer un signal véritablement aléatoire (et non seulement chaotique), c'est d'utiliser un phénomène quantique.


Information d'une inutilité impressionnante dans le cadre de ce thread puisque totalement inutilisable :sweat:  
(a moins que ton ordinateur soit capable de générer des systèmes chaotiques, auquel cas tu devrais le vendre ca te fera des tunes :sol: )
 
Comme on dit, la culture c'est comme la confiture, hein smara [:itm]


Message édité par masklinn le 31-10-2004 à 18:23:26

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°887201
Chronoklaz​m
Posté le 31-10-2004 à 18:26:39  profilanswer
 

Dans la logique de ton raisonnement, ce que tu viens d'écrire est aussi d'une inutilité flagrante :)

n°887202
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 18:27:30  profilanswer
 

Masklinn a écrit :

Information d'une inutilité impressionnante dans le cadre de ce thread puisque totalement inutilisable :sweat:  
(a moins que ton ordinateur soit capable de générer des systèmes chaotiques, auquel cas tu devrais le vendre ca te fera des tunes :sol: )
 
Comme on dit, la culture c'est comme la confiture, hein smara [:itm]


 
Merci ton message d'une inutilité astronomique  :lol:

n°887210
cris56
Posté le 31-10-2004 à 18:32:29  profilanswer
 

Masklinn a écrit :

Information d'une inutilité impressionnante dans le cadre de ce thread puisque totalement inutilisable :sweat:  
(a moins que ton ordinateur soit capable de générer des systèmes chaotiques, auquel cas tu devrais le vendre ca te fera des tunes :sol: )
 
Comme on dit, la culture c'est comme la confiture, hein smara [:itm]


 
si tout les messages inutiles pouvais etre comme celui la

n°887216
masklinn
í dag viðrar vel til loftárása
Posté le 31-10-2004 à 18:36:11  profilanswer
 

Chronoklazm a écrit :

Dans la logique de ton raisonnement, ce que tu viens d'écrire est aussi d'une inutilité flagrante :)


Non, il apporte de l'information dans la mesure ou il explique aux personnes fréquentant ce topic qu'il n'est pas possible de générer informatiquement un système chaotique [:spamafote]  

Citation :

Laisse tomber, Masklinn est du genre à en vouloir à ceux qui pourraient lui apprendre qqc car il aurait l'impression de se sentir inférieur.


J'aime beaucoup apprendre des gens qui ont des choses à m'apprendre, mais ces gens ressemblent plus à Gfx, Stephen, Gregttr ou Taz qu'à toi [:itm] (en se limitant à hwfr)
En fait, ces gens ressemblent à des personnes en sachant plus que moi [:figti]  
 
Comprends bien, le débat sur l'obtention de valeurs réellements aléatoires par utilisation de systèmes chaotiques c'est très bien, mais c'est à faire dans la cat discu science, l'informatique actuelle étant par définition déterministe la génération d'un système chaotique et donc de quelque chose de mieux que les suites pseudo-aléatoires disponibles actuellement n'a même pas à être considéré, il est donc inutile et destructif d'en faire mention dans ce thread [:calin]

Citation :

si tout les messages inutiles pouvais etre comme celui la


 :pfff:  
j'ai pas dit inutile bordel, j'ai dit inutile dans le cadre de ce thread


Message édité par masklinn le 31-10-2004 à 18:37:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°887232
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 18:43:56  profilanswer
 

Masklinn a écrit :

Non, il apporte de l'information dans la mesure ou il explique aux personnes fréquentant ce topic qu'il n'est pas possible de générer informatiquement un système chaotique [:spamafote]  


 
Dans la mesure où on m'a posé la question, je réponds et j'explique.


Message édité par smaragdus le 31-10-2004 à 19:09:09
n°887246
masklinn
í dag viðrar vel til loftárása
Posté le 31-10-2004 à 18:54:36  profilanswer
 

Smaragdus a écrit :

Dans la mesure où on m'a posé la question, je réponds et j'explique.


Question "habilement" amenée en en faisant mention [:itm]  
Quand bien même tu savais l'inutilité de la dite mention dans le cadre de suites (pseudo)aléatoires générées informatiquement [:itm]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°887255
cris56
Posté le 31-10-2004 à 18:59:02  profilanswer
 

oui mais pas la peine d'en faire tout un troll, c'est la aussi que les post s'accumulent inutilement

n°887268
smaragdus
whores, drugs & J.S. Bach
Posté le 31-10-2004 à 19:08:53  profilanswer
 

cris56 a écrit :

oui mais pas la peine d'en faire tout un troll, c'est la aussi que les post s'accumulent inutilement


 
Devant de telles dérives, j'ai prevenu un modo :jap:

n°887316
gilou
Modérateur
Modzilla
Posté le 31-10-2004 à 19:47:35  profilanswer
 

Masklinn a écrit :

Non, il apporte de l'information dans la mesure ou il explique aux personnes fréquentant ce topic qu'il n'est pas possible de générer informatiquement un système chaotique [:spamafote]  

Citation :

Laisse tomber, Masklinn est du genre à en vouloir à ceux qui pourraient lui apprendre qqc car il aurait l'impression de se sentir inférieur.


J'aime beaucoup apprendre des gens qui ont des choses à m'apprendre, mais ces gens ressemblent plus à Gfx, Stephen, Gregttr ou Taz qu'à toi [:itm] (en se limitant à hwfr)
En fait, ces gens ressemblent à des personnes en sachant plus que moi [:figti]  
 
Comprends bien, le débat sur l'obtention de valeurs réellements aléatoires par utilisation de systèmes chaotiques c'est très bien, mais c'est à faire dans la cat discu science, l'informatique actuelle étant par définition déterministe la génération d'un système chaotique et donc de quelque chose de mieux que les suites pseudo-aléatoires disponibles actuellement n'a même pas à être considéré, il est donc inutile et destructif d'en faire mention dans ce thread [:calin]

Citation :

si tout les messages inutiles pouvais etre comme celui la


 :pfff:  
j'ai pas dit inutile bordel, j'ai dit inutile dans le cadre de ce thread

Euh si, je crois: si tu veux un systeme reellement aleatoire, ca peut se faire, mais sous forme de systeme physique (une histoire d'agitation/bruit thermique il me semble) avec un capteur, dont les valeurs sont utilisées.
J'ai entendu parler de ce truc il y a un bail, mais je ne sais pas ou ca en est actuellement.
A+,


Message édité par gilou le 31-10-2004 à 19:49:02

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème avec rand()

 

Sujets relatifs
Probleme de taille de bouton sur PDA avec WinCE4.2[C] Problème de librairie ...
Probleme d'apostrophe.Probleme de numeroAuto
Reseau Socket - Problème de bind() dans un client/serveur localProblème avec la fonction MoveFile [Résolu]
[C] Probleme de conversion char -> intProblème de transfert de Paradox vers MSSQL
Probleme avec une requêteProbleme de complilation
Plus de sujets relatifs à : problème avec rand()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR