Stavo cercando di scrivere un programmino che faccia la seguente cosa:
prendiamo tre scatole, di cui una sola è piena ma non sappiamo quale (rappresentiamo questa cosa con un array do boolean falsi tranne uno vero).
Ora scegliamo una scatola a caso. Dopodiché "scartiamo" una scatola vuota tra le due rimanenti.
Alla fine "cambiamo" scelta di scatola, e controlliamo se abbiamo scelto quella piena o no, e se è piena facciamo successi++;
Spero di essere stato abbastanza chiaro
bene, il programmino che ho fatto è questo:
Viene compilato senza errori, ma in esecuzione non dà nessun output, secondo me perché i numeri generati in questo modo non sono casuali al 100%.codice:import java.util.Random; public class probCasse { public static void main(String[]x){ boolean[] casse = new boolean[3]; int i, successi=0, vecchiascatola, randomInt; for(i=0;i<=2147483647;i++){ casse[0]=casse[1]=casse[2]=false; Random randomGenerator = new Random(); randomInt = randomGenerator.nextInt(3); casse[randomInt]=true; //scatola vincente presa a caso Random randomGenerator2 = new Random(); vecchiascatola = randomGenerator2.nextInt(3); //scegliamo una scatola a caso do{ //scarta a caso una cassa vuota tra le due false che non sia quella scelta randomGenerator = new Random(); randomInt = randomGenerator.nextInt(3); }while(casse[randomInt] || randomInt==vecchiascatola); //randomInt e' la scatola scartata, vecchiascatola e' la scatola che avevamo scelto prima. for(i=0;i<3;i++) if(i!=randomInt && i!=vecchiascatola)break; //ora i e' la nuova scatola scelta if(casse[i])successi++; } System.out.println("Hai vinto il " + 100*successi/2147483647 + "% delle volte"); } }
Chi mi sa aiutare?
Grazie in anticipo

Rispondi quotando