correction et avancement sur le rapport

This commit is contained in:
2026-10-14 14:55:25 +02:00
parent be7b09fdb7
commit d102852bcf
11 changed files with 343 additions and 70 deletions
+19 -24
View File
@@ -166,33 +166,28 @@ double ul_mu_litter, ul_sigma_litter;
void update_litter(rabbit_hole_t *rabbits, __uint128_t *new_kitten_male, __uint128_t *new_kitten_female) {
(*new_kitten_female) = 0;
(*new_kitten_male) = 0;
// sigma par femelle carre = ((b-a+1)caree- 1)/12 = 4
// sigma par femelle = 2
//sigma total = sqrt(sigma par femelle carre * N)
//mu = ((9+3)/2 ) * N = 6 * N
if (rabbits->female_litter < 100) {
for (i = 0; i < rabbits->female_litter; i++) {
taille1 = 3 + (int)(4.0 * genrand_real2()); //TODO
taille1 = 3 + (int)(4.0 * genrand_real2()); //TODO
for (int k = 0; k < taille1; k++) {
if (genrand_real1() > 0.5) (*new_kitten_male)++;
else (*new_kitten_female)++;
}
if (rabbits->female_litter < 100) {
for (i = 0; i < rabbits->female_litter; i++) {
taille1 = 3 + (int)(4.0 * genrand_real2());
for (int k = 0; k < taille1; k++) {
if (genrand_real1() > 0.5) (*new_kitten_male)++;
else (*new_kitten_female)++;
}
}else {
ul_mu_k = 6.0*(double)rabbits->female_litter;
ul_sigma_k = sqrt(4.0 * (double)rabbits->female_litter);
gauss(x_gauss);
x_gauss[0] = CLAMP_BTW(x_gauss[0] * ul_sigma_k+ ul_mu_k, 0.0 , rabbits->female_litter * 9.0);
ul_mu_sex = x_gauss[0] * 0.5;
ul_sigma_sex = sqrt(ul_mu_sex * 0.5);
x_gauss[1] = CLAMP_BTW(x_gauss[1] * ul_sigma_sex + ul_mu_sex , 0.0, rabbits->female_litter * 9.0);
(*new_kitten_female) = (__uint128_t)roundl(x_gauss[1]) ;
(*new_kitten_male) = (__uint128_t)roundl(x_gauss[0] - x_gauss[1]);
}
}else {
ul_mu_k = 4.5*(double)rabbits->female_litter; // 4.5 = (b+a)/2
ul_sigma_k = sqrt(1.118 * (double)rabbits->female_litter); //(k²−1)/12 = 1.118
gauss(x_gauss);
x_gauss[0] = CLAMP_BTW(x_gauss[0] * ul_sigma_k+ ul_mu_k, 0.0 , rabbits->female_litter * 9.0);
ul_mu_sex = x_gauss[0] * 0.5;
ul_sigma_sex = sqrt(ul_mu_sex * 0.5);
x_gauss[1] = CLAMP_BTW(x_gauss[1] * ul_sigma_sex + ul_mu_sex , 0.0, rabbits->female_litter * 9.0);
(*new_kitten_female) = (__uint128_t)roundl(x_gauss[1]) ;
(*new_kitten_male) = (__uint128_t)roundl(x_gauss[0] - x_gauss[1]);
}
nb_females = 0;
for (i = 0; i < N_MATURE; i++) {