#include #include #include #include void segregacao(int *pai, int *mae, int *filho, int *n) { int register i; double unif; GetRNGstate(); for (i=0; i< *n; i++){ if(pai[i] == 1 && mae[i] == 1) filho[i] = 1; if((pai[i] == 1 & mae[i] == 2) | (pai[i] == 2 & mae[i] == 1)){ unif = runif(0,1); if(unif <= 0.5) { filho[i] = 1; } else { filho[i] = 2; } } if((pai[i] == 1 & mae[i] == 3) | (pai[i] == 3 & mae[i] == 1)) filho[i] = 2; if(pai[i] == 2 && mae[i] == 2){ unif = runif(0,1); if(unif <= 0.25) filho[i] = 1; else { if((unif > 0.25) & (unif >= 0.75)) filho[i] = 2; else { filho[i] = 3; } } } if((pai[i] == 2 & mae[i] == 3) | (pai[i] == 3 & mae[i] == 2)) { unif = runif(0,1); if(unif <= 0.5) filho[i] = 2; else { filho[i] = 3; } } if(pai[i] == 3 && mae[i] == 3) filho[i] = 3; } PutRNGstate(); }