Générateur de variables aléatoires
Duaam
Messages postés
21
Statut
Membre
-
Duaam Messages postés 21 Statut Membre -
Duaam Messages postés 21 Statut Membre -
Bonjour,
je cherche une procédure en C qui permet de générer des variables aléatoires selon la loi de Poisson ,pour une matrice donnée en dimensions n et m
Merci
je cherche une procédure en C qui permet de générer des variables aléatoires selon la loi de Poisson ,pour une matrice donnée en dimensions n et m
Merci
3 réponses
-
Bonjour
Sans rentrer dans les détails que veux-tu dire réellement par des variables aléatoires ? c'est-à-dire faire en sorte que ta variable devienne un des types de variable standard en langage C ou autre ? car, si c'est le cas des variables en langage C tu asauto
qui permet de définir un type automatiquement selon ce qui se trouve comme résultat retour dans la variable en question mais par défaut il est du type entier.
Seconde solution est avec le langage C++ il se peut que tu fasses quelque chose du genre sans rentrer en détails car trop long a expliquer donc voici un exemple tirée de la référence C++11 sur leur site https://en.cppreference.com/w/cpp/language/auto
#include <iostream> #include <cmath> #include <typeinfo> template<class T, class U> auto add(T t, U u) -> decltype(t + u) // the return type is the type of operator+(T,U) { return t + u; } auto get_fun(int arg)->double(*)(double) // same as double (*get_fun(int))(double) { switch (arg) { case 1: return std::fabs; case 2: return std::sin; default: return std::cos; } } int main() { auto a = 1 + 2; std::cout << "type of a: " << typeid(a).name() << '\n'; auto b = add(1, 1.2); std::cout << "type of b: " << typeid(b).name() << '\n'; //auto int c; //compile-time error auto d = {1, 2}; std::cout << "type of d: " << typeid(d).name() << '\n'; auto my_lambda = [](int x) { return x + 3; }; std::cout << "my_lambda: " << my_lambda(5) << '\n'; auto my_fun = get_fun(2); std::cout << "type of my_fun: " << typeid(my_fun).name() << '\n'; std::cout << "my_fun: " << my_fun(3) << '\n'; }
à bientôt -
Attention Duaam, variable aléatoire ne veut rien dire.
De quoi parles-tu ? De valeur aléatoire ? Si oui, de quel type ? Entier ? Nombre ? Caractère ? Mot ?
Ou tu parles de variable avec des types aléatoires ?
Ou autre ?
Sinon, tu veux programmer en C ou en C++ ? (Juste pour confirmation).
Google is your friend-
-
Salut :-).
Tu as redit variable aléatoire mais tu voulais dire "valeur" j'imagine ?
De plus, tu n'as pas dit si tu voulais programmer en C ou en C ++ ?
C j'imagine ?
Si oui, il suffit de tirer une variable aléatoire avec rand() de diviser par RAND_MAX pour avoir un float (ou double que je te conseille) entre 0 et 1. -
:D je vais plus dire variable alèatoire mais valeur alèatoire .
C'est bien ce que j'ai fait
Voici mon nouveau code :
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
// remplissage de la matrice avec des variables alèatoires entre 0 et 10 //
void remplissage (float T[100][100],int n,int m)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
T[i][j] = (float)rand()/RAND_MAX ;
}
}
//calcul des moyennes marginales //
void moy_marg (float M[100][100],float T[100],int *l,int *p)
{
int i,j;float s;
for (i=0;i<*l;i++)
{
s=0;
for (j=0;j<*p;j++)
{
s=s+M[i][j];}
T[i]=s/(*p);}
}
//calcul de la variance //
void var_ecar(float M[100][100],float V[100],float W[100],int *l,int *p)
{
int i,j;
float r,T[100];
for (i=0;i<*l;i++)
{
r=0;
for(j=0;j<*p;j++)
{
r=r+((M[i][j]-T[i])*(M[i][j]-T[i]));
}V[i]=r/(*p);
W[i]=sqrt(V[i]);
}
}
void affichage (float N[100],int c)
{
int i;
for(i=0;i<c;i++)
{
printf("%f \n",N[i]);
}printf("\n");}
void affichagem (float N[100][100],int c,int d)
{
int i,j;
for(i=0;i<c;i++)
{
for(j=0;j<d;j++){
printf("%f\t",N[i][j]);
}
printf("\n");}
}
main()
{
int n,m,i,j; float M[100][100], V[100],T[100],W[100];
system("color 1D");
printf("Donnez les dimensions de votre matrice :\n");
printf("Donnez n=");
scanf("%i",&n);
printf("Donnez m=");
scanf("%i",&m);
srand(time(NULL));
remplissage(M,n,m);
affichagem (M,n,m);
moy_marg(M,T,&n,&m);
system("color 4E");
printf("voici votre vecteur moyennes :\n");
affichage (T,n);
var_ecar (M,V,W,&n,&m);
printf("Voici votre vecteur variance :\n");
affichage (V,n);
system("color 3F");
printf("Voici votre vecteur ecart type :\n");
affichage (W,n);
system("pause");
return 0;
}
Mais :( j'ai entendu parler des lois ,veut dire qu'un générateur de valeurs aléatoires doit suivre une loi normal ou loi de Poisson pour générer des valeurs aléatoires !!! -
-
-
-