cpp - generer un nombre aleatoirement? probleme

cpp - generer un nombre aleatoirement? probleme - C++ - Programmation

Marsh Posté le 18-06-2003 à 12:15:25    

bonjour,
 
jai besoin de genrer un nombre aleatoirement dans une boucle.
Jutilise ceci pour faire le nombre :
 
srand((unsigned) time(NULL));
iNombre=rand() % 16;
 
 
mais le nombre est pa tres aleatoire... (tres repetitif, apres avoir changé 3x il reste le meme...)
Bref ca marche pas au point.
 
Que dois-je faire?

Reply

Marsh Posté le 18-06-2003 à 12:15:25   

Reply

Marsh Posté le 18-06-2003 à 17:22:26    

Reply

Marsh Posté le 18-06-2003 à 23:50:38    

Code :
  1. const unsigned N= time(NULL) % RAND_MAX;
  2.   printf("comparaison entre my_bad_rand et my_better_rand\n"
  3.          "nombre d\'iterations (bigger is better) : " );
  4.   unsigned i, size;

 
tu es sur que ce soit bien correct en C ?

Reply

Marsh Posté le 19-06-2003 à 00:08:02    

pour le const, non, par contre le reste est tout à fait légal

Reply

Marsh Posté le 19-06-2003 à 00:16:13    

c'est meme legale pour sarkozy ?

Reply

Marsh Posté le 19-06-2003 à 00:17:55    

sauf le cas pas de chance ou N prends zero, malloc retourne alors NULL... fodrait que je réécrives tout ça

Reply

Marsh Posté le 19-06-2003 à 00:21:33    

jolie coloration syntaxique en html

Reply

Marsh Posté le 19-06-2003 à 00:21:46    

fo pas pousser non plus

Reply

Marsh Posté le 19-06-2003 à 00:28:15    

je pense pas que ton code se compile en gcc 2.95

Reply

Marsh Posté le 19-06-2003 à 00:32:30    

non mais c meme sur =)
 
mais bon visual C de micro application, ça a l'air sympa apparement

Reply

Marsh Posté le 19-06-2003 à 00:32:30   

Reply

Marsh Posté le 19-06-2003 à 00:45:31    

C99 ça vous dit quelque chose? c'est pas parce que VC à plusieurs années qu'il faut utiliser une aussi vieille version de gcc

Reply

Marsh Posté le 19-06-2003 à 00:47:52    

tagueule.
je prend la version de gcc que je veux et ta norme pourri j'en ai rien a foutre.

Reply

Marsh Posté le 19-06-2003 à 00:48:32    

Bah en fait, moi qd ça compile pas je modifie les sources, je change pas de compilateur. :p
Un prog qui compile partout c qd mm plus "portable"

Reply

Marsh Posté le 19-06-2003 à 00:49:26    

non le mieux c'est de faire du code qui se compile que sur ton pc

Reply

Marsh Posté le 19-06-2003 à 01:02:37    

vous voulez je vous mail le draft du C99 (qui date de 99 evidemment?)
 
quand vous aurez fini vos conneries... const fait partie de l'ANSI, la seule chose C99 de mon code c'est les déclarations de variables partout. vous etes gonflant... j'ai ecris ce truc y a bien 2 ans, et y avait déjà le support de C99 dans gcc. je sais que tout le monde peut pas avoir un gcc-3.3 ultra récent, mais tout le monde peut se procurer un 3.2.
 
et pour votre info Linux compilera bientot plus avec gcc < 3

Reply

Marsh Posté le 19-06-2003 à 01:19:47    

non on est pas gonflant, je peux pas compiler ton code source de merde avec ma version foireuse de gcc =)
ca te fais quoi de mettre toutes les variables au debut ?
moi ca m'evite d'avoir a modifier les sources toi ca te change rien

Reply

Marsh Posté le 19-06-2003 à 01:21:11    

c'est quoi ce bordel, 'jai jamais forcé personne à compiler mon code.... je retourne pondre des modules C pour Python, la bas, la communauté apprécie le C99 comme gage de qualité. a bon entendeur...

Reply

Marsh Posté le 19-06-2003 à 04:36:18    

Pour repondre a la question du monsieur, visiblement il fait un srand a chaque tour de boucle, ce qui expliquerait ces changements periodiques.
Le srand doit etre declare "en debut" de programme et il ne faut plus y toucher. Si tu en fais une utilisation serieuse/poussee, change de generateur, le standard est mauvais (google mersenne twister, tu auras un generateur valable).

Reply

Marsh Posté le 19-06-2003 à 11:50:40    

Mais non il n'est pas mauvais le srand ... il faut initialiser en début de programme la 'pile' random en utilisant randomize ... sinon on a tjs la meme pile et donc tjs les memes nombres.
 
ex:  
randomize();
int number=random(40)+1;
 
etc
.
.
.
 
cordialement, alt3.

Reply

Marsh Posté le 19-06-2003 à 12:52:21    

darkalt3 a écrit :

Mais non il n'est pas mauvais le srand ... il faut initialiser en début de programme la 'pile' random en utilisant randomize ... sinon on a tjs la meme pile et donc tjs les memes nombres.
 
ex:  
randomize();
int number=random(40)+1;
 
etc
.
.
.
 
cordialement, alt3.


 
Il se trouve dans quel header randomize?

Reply

Marsh Posté le 19-06-2003 à 13:07:58    

Citation :

c'est quoi ce bordel, 'jai jamais forcé personne à compiler mon code....

 
non mais coupe internet chez toi hein, tu risques de te faire du mal

Reply

Marsh Posté le 19-06-2003 à 13:44:02    

gogoprog a écrit :


 
Il se trouve dans quel header randomize?


 
hop: stdlib.h
(de rien)


Message édité par darkalt3 le 19-06-2003 à 14:11:58
Reply

Marsh Posté le 19-06-2003 à 13:52:23    

:heink:

Reply

Marsh Posté le 19-06-2003 à 14:40:27    

darkalt3 a écrit :

Mais non il n'est pas mauvais le srand ... il faut initialiser en début de programme la 'pile' random en utilisant randomize ... sinon on a tjs la meme pile et donc tjs les memes nombres.
 
ex:  
randomize();
int number=random(40)+1;
 
etc
.
.
.
 
cordialement, alt3.


 
...
C'est exactement ce que je viens de dire... Sauf que toi tu lui files un generateur qui n'est pas forcement mieux et qui  est apparemment non standard :o
 

Reply

Marsh Posté le 19-06-2003 à 14:51:33    

Angel_Dooglas a écrit :


 
...
C'est exactement ce que je viens de dire... Sauf que toi tu lui files un generateur qui n'est pas forcement mieux et qui  est apparemment non standard :o
 
 


 
Pas forcément mieux, je te l'accorde à 100%.
Mais non standard ? stdlib ? je ne comprends pas :/

Reply

Marsh Posté le 19-06-2003 à 14:52:45    

ben les OS se gène pas pour rajouter des tas de truc dans les entetes standards

Reply

Marsh Posté le 19-06-2003 à 14:59:39    

++Taz a écrit :

ben les OS se gène pas pour rajouter des tas de truc dans les entetes standards


 
Bah oui mais randomize(), on la trouve dans le k&r non ?

Reply

Marsh Posté le 19-06-2003 à 15:04:07    

darkalt3 a écrit :


 
Bah oui mais randomize(), on la trouve dans le k&r non ?


 
srand() pour la graine et rand() pour la generation.

Reply

Marsh Posté le 19-06-2003 à 15:12:51    

Angel_Dooglas a écrit :


 
srand() pour la graine et rand() pour la generation.  


 
Ok c noté, merci :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed