Générateur de variables aléatoires

Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

3 réponses

sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
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 as
auto
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
0
Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour ,
Merci pour votre réponse :)
À vrai dire ,moi je travaille avec l'environnement Dev C++ et je cherche d'insérer une procédure afin de remplir ma matrice avec des variables aléatoires
Cette procédure doit contenir un générateur qui fonctionne avec la loi de Poisson ou autres lois .
Cdlt
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Euh, il n'y a pas de type "auto" en C ISO...
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
salut @fiddy
Je n'ai pas été claire Lol je parle du mots-clés auto en langage C
autant pour moi
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Il n'y a pas non plus de mot clé "auto" en C ISO...
0
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   49
 
?? et
 auto var = 10; 
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
0
Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Salut fiddy !!
Ravie de te revoir :)
Des variables aléatoires de type float !!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0
Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
: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 !!!
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Hum, là c'est plus des maths que de la programmation.
C'est à toi de définir ton générateur ?
0
Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Ouii exactement , mais je sais pas comment faire :(

--
0
Duaam Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
Je programme toujours avec le Dev C++ :D

--
0