begin process at 2013 05 23 20:13:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

Séquence aléatoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Séquence aléatoire

vendredi 1 juin 2012 à 17:20:27 | Séquence aléatoire

wilvart

Membre Club
Salut tout le monde !

J'ai besoin de votre aide pour un problème avec les nombres aléatoires.

J'ai codé un algo simpliste (suffisant pour mon projet) de limite centrale. Dans celui-ci je génère 12 nombres aléatoires que j'additionne ect...

Mon problème est le suivant, lorsque j'exécute mon script (python swig), j'appel ma fonction C++ qui génère toujours la même séquence aléatoire.

En me renseignant, j'ai plus ou moins compris que le problème venait du fait que mon traitement se fait en moins d'une seconde, donc démarre de la même seed à chaque fois...

Je m'embrouille et je sais plus quoi faire, des idées?

PS: Mes include sont bon, etc...

Code Python :
...
res=0
ioMean=0
ioStddev=0
tmpM=0
i = 1

while i < 500:
	seed = (i==1)
	res = centralLimit.execute(175, 20, seed)
	tmpM = ioMean
	ioMean  += (res - tmpM) / i
	ioStddev += (res - tmpM) * (res - ioMean)
	i += 1

print ioMean
ioStddev = sqrt(ioStddev/(500-1))
print ioStddev
...



Code C/C++ :
class CentralLimitAlgorithm : public AbstractAlgorithm
{
	public:
		static int execute (int mean, int stddev);
	
	private:
};



Code C/C++ :
int CentralLimitAlgorithm::execute (int mean, int stddev)
{
	
	srand(time(NULL));
	
	
	double res = 0;
	
	for (int i=0; i<12; i++)
	{
		res += ((double) rand() / (RAND_MAX));
	}
	
	res -= 6;	
	res /= 6;	
	float sigma= res * stddev ;
	res += mean + sigma;

	return res;
}
vendredi 1 juin 2012 à 18:22:30 | Re : Séquence aléatoire

CptPingu

Administrateur CodeS-SourceS
Bonjour.

Oui c'est normal. Ton seed étant toujours le même (si tu exécute en moins d'une seconde), tu auras toujours la même séquence. Il te faut utiliser un autre algorithme de génération de nombre aléatoire.

Si tu as accès au C++0x, utilises un mersenne_twister.
(Ex: http://www.johndcook.com/test_TR1_random.html)

Ou alors cherche un générateur de nombre aléatoire sans seed sur le net.
(ex: http://www.bedaux.net/mtrand/)

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
lundi 4 juin 2012 à 12:32:09 | Re : Séquence aléatoire

wilvart

Membre Club
Merci de ton aide, mon boss m'a changé de mission mais je regarde tout ça dès que j'y reviens !
jeudi 14 juin 2012 à 23:49:49 | Re : Séquence aléatoire

darkbatcher

Hello !

Effectivement comme l'a dit CptPingu, c'est normal puisque tu démarre de la même seed.

Cela dit, il parait plus intelligent de n'appeler srand() qu'une seule fois, srand() est réservée à l'initialisation de la suite. Après rand utilise comme seed le dernier nombre aléatoire produit.

@+


Cette discussion est classée dans : code, int, res, iomean, iostddev


Répondre à ce message

Sujets en rapport avec ce message

Aide pour mega debutant [ par C++ ] Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int Format de données [ par leskritiques ] Voici le programme que je veux modofier :#include "chaine.h"#include "entreeSortie.h"#include "chaine.cpp"#include "entreeSortie.cpp"int pgcd (const i pbs avec une calculatrice [ par Nonobis ] slt tous ! Le premier qui m'aidea sera le bienvenu ...(1er post ici ...)Voial, le prob est dans le code d'une calculatrice en c que je susi en train d Probleme avec le "linker" [ par Darkneon ] Salut,J'ai 3 fichiers comme ceciTest.cpp#include "test.h"#include void PrintA(int num){ for(int i=0; i<num; i++ besoin d'aide [ par ekinoks ] voila g trouver un code c++ pour decrypté un fichier mais je m'y conné pas dutout en c++ kunkun pouré m'aidéle code est :void p(FILE* fp, int seed) { Cacher le curseur [ par BsEtZeOpLhD ] Salut.J'essay de cacher le curseur sous win Xp.J'ai fait le code suivant :#include int WINAPI WinMain(HINSTANCE hinstExe, HINSTANC exception et AfsMessageBox [ par poseidon2 ] Voic mon code: void *ImageLink::imageRecvThread(void *pParam){ ImageLink *iLink = (ImageLink*)pParam; int nIndex = 0; int nSizeRecv = 0; unsigned in Difference [ par xionoxid ] C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i Pointeur [ par casafa ] Bonjour tlm,Je suis débutant et je comprend à quoi sert les pointeurs...Quel est la différence entre ces 2 exemples, qu'est ce que le premier à en plu Erreur [ par LordBob ] Salut a tous,voila je voudrait faire un truc, mais je n'y arrive pas. Alors plutot que de vous expliquez ce que c'est, je vous montre le code.#include


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,273 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales