A voir également:
- Probleme de programation C++
- Programation ✓ - Forum Programmation
- La programation - Forum Programmation
- Programation - Forum Programmation
- Programation - Forum Programmation
- Programation - Forum Études / Formation High-Tech
7 réponses
yann59
Messages postés
87
Date d'inscription
samedi 14 décembre 2002
Statut
Membre
Dernière intervention
25 août 2009
14
9 mai 2004 à 12:22
9 mai 2004 à 12:22
Bon j'ai pas trop d'idée de génie pour toi, mais j'ai une idée à la con.
Tu définis un tableau de 1 à 35 , ensuite :
Tab[1] = 1
Tab[2] = 2
Tab[3] = 3
.....
Tab[35] = 35
Ensuite, tu effectuesune boucle de 1 à 35 (pour passer dans chaque case de ton tableau). Tu effectues un Random de 1 à 35 et là tu inverseras le chiffre de ta position actuelle avec celui du Random.
Exemple algorithmique :
================
Pour i = 1 jusque 35
position = random(1,35)
buffer = tab[i]
tab[i] = tab[position]
tab[position] = buffer
i = i+1
Fin_Pour
Bon je sais pas si c'est ce que tu voulais, c'est peut etre pas optimale non plus mais ça me plait!!
:-p
Yann
Tu définis un tableau de 1 à 35 , ensuite :
Tab[1] = 1
Tab[2] = 2
Tab[3] = 3
.....
Tab[35] = 35
Ensuite, tu effectuesune boucle de 1 à 35 (pour passer dans chaque case de ton tableau). Tu effectues un Random de 1 à 35 et là tu inverseras le chiffre de ta position actuelle avec celui du Random.
Exemple algorithmique :
================
Pour i = 1 jusque 35
position = random(1,35)
buffer = tab[i]
tab[i] = tab[position]
tab[position] = buffer
i = i+1
Fin_Pour
Bon je sais pas si c'est ce que tu voulais, c'est peut etre pas optimale non plus mais ça me plait!!
:-p
Yann
bonjour
J'ai une question pour l'oteur de se message ( à pinpin )
Quel compilateur utilise tu pour compiler en c++?
mersi d'avance
ps tu peux me répondre par mail
J'ai une question pour l'oteur de se message ( à pinpin )
Quel compilateur utilise tu pour compiler en c++?
mersi d'avance
ps tu peux me répondre par mail
j ai un syteme d equations différentielles couplées de types
d2(y)/d(t2)= d(x)/dt sin(a)
d2(x)/d(t2)= - d(y)/dt sin(a)
avec a qui varie a= y/r
avec r= contante conue.
je cheche a résoudre ce probleme numériquement sur c++
par la méthode de Rung kutta ( ou euler).
j ai besoin de votre aide car je sui débutant sur le c++
d2(y)/d(t2)= d(x)/dt sin(a)
d2(x)/d(t2)= - d(y)/dt sin(a)
avec a qui varie a= y/r
avec r= contante conue.
je cheche a résoudre ce probleme numériquement sur c++
par la méthode de Rung kutta ( ou euler).
j ai besoin de votre aide car je sui débutant sur le c++
bonjour a tous;
je souhaite connaitre comment génèrer un nombre aléatoire dans un intervale donné (entre 2 nombres) en C++ builder 6.
merci d'avance.
je souhaite connaitre comment génèrer un nombre aléatoire dans un intervale donné (entre 2 nombres) en C++ builder 6.
merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut
#include<iostream>
#include<cstdlib> // pour avoir la constante RAND_MAX
#include<cassert>
using namespace std;
int main()
{
const double a=2;
const double b=7;
asser(b>a);
for(int i=0;i<20;i++) cout<<(double)rand() / (double)RAND_MAX *(b-a)+a<<endl;
return 0;
}
explications : quand tu fais rand(), tu obtiens un ENTIER entre 0 et RAND_MAX. Donc quand tu fais rand()/RAND_MAX tu effectues une division entre 2 ENTIERS donc tu obtiens 0. C'est pourquoi tu dois convertir en double afin d'effectuer une division de DOUBLE.
Tu ramène ton intervalle [a,b] à [0, b-a].
(double)rand() / (double)RAND_MAX *(b-a) te renvoie un nb aléatoire entre a et b-a.
Puis tu rajoute a à ton nombre afin de revenir entre a et b d'où le "+a" à la fin
#include<iostream>
#include<cstdlib> // pour avoir la constante RAND_MAX
#include<cassert>
using namespace std;
int main()
{
const double a=2;
const double b=7;
asser(b>a);
for(int i=0;i<20;i++) cout<<(double)rand() / (double)RAND_MAX *(b-a)+a<<endl;
return 0;
}
explications : quand tu fais rand(), tu obtiens un ENTIER entre 0 et RAND_MAX. Donc quand tu fais rand()/RAND_MAX tu effectues une division entre 2 ENTIERS donc tu obtiens 0. C'est pourquoi tu dois convertir en double afin d'effectuer une division de DOUBLE.
Tu ramène ton intervalle [a,b] à [0, b-a].
(double)rand() / (double)RAND_MAX *(b-a) te renvoie un nb aléatoire entre a et b-a.
Puis tu rajoute a à ton nombre afin de revenir entre a et b d'où le "+a" à la fin
18 mai 2004 à 16:52
Merci encore et a plus