/*************************************************************************************************************************************/
/* */
/* L A N C E R D E D E U X D E S : */
/* */
/* */
/* Author of '$xtc/DeuxDes.01$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20231024122249). */
/* */
/*************************************************************************************************************************************/
#include "INCLUDES.01.I"
extern double drand48();
extern double sqrt();
#define MINIMUM \
(1)
#define MAXIMUM \
(6)
/* Definition d'un de a six faces. */
#define F(n) \
((2*((n)-1))+1)
#define G(n) \
((n)/2)
#define N \
((MAXIMUM)+1)
#define RANDOM(minimum,maximum) \
MIN2(MAX2((int)(minimum + (maximum*drand48())),MINIMUM),MAXIMUM) \
/* Generation d'une valeur aleatoire dans [minimum,maximum]. */
#define N_TIRAGES \
200000
#define FACTEUR \
(0.0002*(2000000/(N_TIRAGES)))
main()
{
int n;
int aleatoires[N_TIRAGES];
int occurence_1[N];
int occurence_2[F(N)];
int check=0;
double ValeurMoyenne_1=0;
double Variance______1=0;
double ValeurMoyenne_2=0;
double Variance______2=0;
for (n=0 ; n < N ; n++)
{
occurence_1[n] = 0;
/* Initialisation des compteurs d'occurences... */
}
for (n=0 ; n < F(N) ; n++)
{
occurence_2[n] = 0;
/* Initialisation des compteurs d'occurences... */
}
for (n=0 ; n < N_TIRAGES ; n++)
{
aleatoires[n]=RANDOM(MINIMUM,MAXIMUM);
/* Generation des valeurs aleatoires... */
if ((aleatoires[n] < MINIMUM) || (aleatoires[n] > MAXIMUM))
{
printf("Un nombre aleatoire n'est pas dans [%d,%d].\n",MINIMUM,MAXIMUM);
}
else
{
}
}
for (n=0 ; n < N_TIRAGES ; n++)
{
ValeurMoyenne_1 = ValeurMoyenne_1+(double)aleatoires[n];
/* Calcul de la valeur moyenne des valeurs aleatoires... */
}
ValeurMoyenne_1 = ValeurMoyenne_1/(double)N_TIRAGES;
for (n=0 ; n < N_TIRAGES ; n++)
{
Variance______1 = Variance______1+pow(((double)aleatoires[n])-ValeurMoyenne_1,2);
/* Calcul de la variance des valeurs aleatoires... */
}
Variance______1 = Variance______1/(double)N_TIRAGES;
n=0;
while (n < N_TIRAGES)
{
int random_1=aleatoires[n++];
int random_2=aleatoires[n++];
int random_12=random_1+random_2;
ValeurMoyenne_2 = ValeurMoyenne_2+(double)(random_12);
/* Calcul de la valeur moyenne des couples de valeurs aleatoires... */
}
ValeurMoyenne_2 = ValeurMoyenne_2/(double)G(N_TIRAGES);
n=0;
while (n < N_TIRAGES)
{
int random_1=aleatoires[n++];
int random_2=aleatoires[n++];
int random_12=random_1+random_2;
Variance______2 = Variance______2+pow((double)(random_12)-ValeurMoyenne_2,2);
/* Calcul de la variance des couples de valeurs aleatoires... */
}
Variance______2 = Variance______2/(double)G(N_TIRAGES);
n=0;
while (n < N_TIRAGES)
/* Validations diverses : */
{
int random_1=aleatoires[n++];
int random_2=aleatoires[n++];
int random_12=random_1+random_2;
occurence_1[random_1]++;
occurence_1[random_2]++;
occurence_2[random_12]++;
check = check++;
check = check++;
if ((random_12 < (MINIMUM+MINIMUM)) || (random_12 > (MAXIMUM+MAXIMUM)))
{
printf("Un couple aleatoire n'est pas dans [%d,%d].\n",MINIMUM+MINIMUM,MAXIMUM+MAXIMUM);
}
else
{
}
}
if (check != N_TIRAGES)
{
printf("Erreur de comptage des occurences (%d # %d).\n",check,N_TIRAGES);
}
else
{
}
for (n=0 ; n < N ; n++)
{
int ValeurCourante=occurence_1[n];
if (ValeurCourante > 0)
{
printf("Tirage 1 : %d --> %d=%f\n",n,ValeurCourante,(double)ValeurCourante/(double)N_TIRAGES);
/* Edition des occurences des valeurs aleatoires... */
}
else
{
}
}
printf("\n");
for (n=0 ; n < F(N) ; n++)
{
int ValeurCourante=occurence_2[n];
if (ValeurCourante > 0)
{
printf("Tirage 2 : %d --> %d=%f\n",n,ValeurCourante,(double)ValeurCourante/(double)G(N_TIRAGES));
/* Edition des occurences des couples de valeurs aleatoires... */
}
else
{
}
}
printf("\n");
for (n=0 ; n < F(N) ; n++)
{
double ValeurCourante=(double)occurence_2[n];
if (ValeurCourante > 0)
{
int k;
printf("Tirage 2 : ");
for (k=1 ; k <= (int)(FACTEUR*ValeurCourante) ; k++)
{
printf("*");
/* Edition de la distribution des couples de valeurs aleatoires... */
}
printf("\n");
}
else
{
}
}
printf("\n");
printf("ValeurMoyenne 1=%f\n",ValeurMoyenne_1);
printf("Variance 1.....=%f\n",Variance______1);
printf("Sigma 1........=%f\n",sqrt(Variance______1));
printf("\n");
printf("ValeurMoyenne 2=%f\n",ValeurMoyenne_2);
printf("Variance 2.....=%f\n",Variance______2);
printf("Sigma 2........=%f\n",sqrt(Variance______2));
printf("\n");
}