| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 
 |  
#include <iostream>
#include <stdio.h>
#include<time.h>
#include<cstdlib>
#include<math.h>
 
 
using namespace std;
 
 
//Creation d'une fonction qui renvoie une loi uniforme sur [0,1]
double uni()
{
    return(rand()/((double)RAND_MAX+1));
}
 
// Fonction de génération géometrique généralisée
int geogen( double a,double theta){
    int k;
    int p;
    int q;
    double u;
    u=uni();
    int result;
    p=1-a*theta;
    k=1;
    q=p+a*pow(theta,k)*(1-theta);
        if(u<p){
                result=0;
        }
        else {
            while((u>q)){
                q=p+a*pow(theta,k)*(1-theta);
                p=q;
                k=k+1;
                result=k;
            }
        }
             return result;
    }
 
//Fonction de génération Pareto
int Pareto(double x,double alpha)
{
    double r;
    int result;
    r = uni();
    result = x*pow(1/(1-r),(1/alpha));
    return result;
}
 
 
//Fonction pour simuler Géométrique Généraliséé
 
int *Creation_vecteur(int n)
{
    int *vecteur;
 
    // Allocation de n pointeurs pour stocker n int
    vecteur=(int*)malloc(n * sizeof(int*));
 
    return vecteur;
}
 
int *SimulGeoGen(int n)
{
    //srand(time(NULL));
    int *vecteur;
    vecteur=Creation_vecteur(n);
 
    int i;
    for(i=0;i<n;i++)
        {
            vecteur[i]=geogen(0.51,0.98);
            //cout<<vecteur[i]<<endl;
        }
    return vecteur;
}
 
int *SimulPareto(int n)
{
    //srand(time(NULL));
    int i;
    int *vecteur;
    vecteur=Creation_vecteur(n);
 
    for (i=0;i<n;i++)
    {
        vecteur[i]=Pareto(100,2.3);
        //cout<<vecteur[i]<<endl;
    }
    return vecteur;
}
 
int main()
{
    int i;
    int *VectPareto;
    int *VectGG;
    srand(time(NULL));
    VectPareto=SimulPareto(10);
    VectGG=SimulGeoGen(10);
 
    cout<<"PARETO"<<endl;
    for (i=0;i<10;i++)
    {
    cout<<VectPareto[i]<<endl;
    }
 
    cout<<"GEOMETRIQUE GENERALISEE"<<endl;
    for (i=0;i<10;i++)
    {
    cout<<VectGG[i]<<endl;
    }
 
    for (i=1;i<20;i++)
    {
        free((int*)VectGG[i]);
    }
    free(VectGG);
 
    for (i=0;i<20;i++)
    {
        free((int*)VectPareto[i]);
    }
    free(VectPareto);
} | 
Partager