Salve a tutti, ho un problema con un programma. Devo calcolare la stima di una simulazione di lancio di n monete e vedere in quanti lanci sono uscite k teste su un totale di 1000 simulazioni. Il programma mi sembra giusto, infatti se stampo "simula_lancio" e "simula_lanci_multipli" escono corretti, il problema è nel formato dello "stima_probabilità" che mi ritorna sempre 0. Sicuramente avrò sbagliato con i float, qualcuno può indicarmi dove?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int simula_lancio ();
int simula_lanci_multipli(int monete);
float stima_lanci (int teste);
int main() {
int n,k;
srand(time(NULL));
printf("Inserisci il numero delle monete da lanciare:");
scanf("%i", &n);
printf("Inserisci il numero delle teste che vuoi verificare:");
scanf("%i", &k);
printf("[Simula]\n");
printf("%i\n", simula_lancio());
printf("[Lancio N]\n");
printf("%i\n", simula_lanci_multipli(n));
printf("[STIMA]\n");
printf("%f\n", stima_lanci(k));
return 0;
}
int simula_lancio (){ //simula il lancio di una singola moneta
int c=0;
if (rand () % 2 == 0) return c; //testa
}
int simula_lanci_multipli (int monete) { //simula un singolo lancio di n monete
int i=1,a=0,p=1;
while(i<=monete) {
if (p==simula_lancio ()) a++; //se ottengo testa incremento la variabile
i++; }
return a; //restituisce il valore di quante teste ho trovato in un singolo lancio
}
float stima_lanci (int teste) { //effettuo 1000 lanci e vedo quante volte coincidono
int r=1000;
int j;
float nlanci=0;
float prob=0;
int l;
for(j=1;j<=r;j++) {
if(teste==simula_lanci_multipli(l)) nlanci++;} //se il valore è uguale a quello previsto salvo il numero
prob=nlanci/r;
return prob;
}