Avansert sannsynlighet

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk for videregående skole og oppover på høyskolenivå. Alle som føler trangen er velkommen til å svare.

Moderatorer: Aleks855, Gustav, Nebuchadnezzar, Janhaa, DennisChristensen, Emilga

Svar
meg

Tre personer A, B og C bor i samme leilighet, som bare har ett bad.
Hver av dem står opp på et vilkårlig tidspunkt mellom 7 og 8 om morgenen, og går rett inn på badet med en gang. Alle bruker nøyakting 15 minutter hver seg på badet. Hva er sannsynligheten for at minst en av dem må vente minst 10 minutter på å få bruke badet?

Skjønner ingenting jeg :?
ThomasB
Guru
Guru
Innlegg: 257
Registrert: 18/03-2004 18:34

Kan jo ta det vanlige knepet først:

Sannsynligheten for at minst en må vente minst 10 minutter = 1 - sannsynligheten for at ingen må vente minst 10 minutter

Det bør vel gjøre det litt enklere... Bare å spørre hvis du fortsatt står fast.
meg

Akkurat det visste jeg.. det er resten jeg står fast på.
Men takk for kjapt svar :wink:
meg

Glemte å nevne det, men jeg håper selvfølgelig dere kan hjelpe meg med resten også. :wink:
ThomasB
Guru
Guru
Innlegg: 257
Registrert: 18/03-2004 18:34

Den var ikke helt lett den her ;)

Har kjørt en datasimulering på den, så svaret skal være 0,481 (litt usikkert det siste sifferet der). Har da antatt at alle mulige tidspunkter er mulige, ikke bare heltallige minutter.

Måten jeg tenkte på er: De tre personene kommer til tre tidspunkter, som i sortert rekkefølge er t1, t2 og t3 (stigende). Hvis ingen må vente i minst 10 minutter, må følgende være oppfylt:
1. t2 - t1 > 5 minutter
2. t3 - t2 > 5 minutter
3. t3 - t1 > 20 minutter
(sannsynligheten for dette er ca. 0,519, sannsynligheten for det motsatte er ca. 0,481)



Grunnen til den siste betingelsen her er at det kan jo hende andremann kommer 5 minutter etter førstemann, han får da ikke kommet inn på badet før førstemann er ferdig. Tredjemann får da ikke brukt badet før 30 minutter etter førstemann, og ettersom han kan vente 10 minutter får vi grensen på (30-10) = 20 minutter.

Skal se litt mer om vi greier å regne det ut, har satt dischler på saken ;)



Nå har jeg kjørt en beregning på det diskrete tilfellet også (heltallige minutter), programmet prøver alle muligheter og teller antall gunstige utfall. Svaret ble 0,5088888...

Dette kom jeg fram til ved at hver person kan komme på alle minutter fra og med 0700 til og med 0759. Dette utgjør 60 minutter. Så telte jeg alle muligheter:
Person 1: 0700 Person 2: 0700 Person 3: 0700
Person 1: 0700 Person 2: 0700 Person 3: 0701
Person 1: 0700 Person 2: 0700 Person 3: 0702
....

Så sjekket jeg betingelsene over, og telte de ulike utfallene. Det gikk bra (ingen måtte vente) i 106080 av 216000 tilfeller. Svaret er altså (1 - 106080/216000) = (109920/216000) = 229/450 = 0,508888888...

Nå vet vi fasit, da gjenstår det bare å finne ut hvordan vi kan komme fram til det på andre måter :oops:
meg

Det var akkurat dette jeg lette etter!
Glemte å nevne det var meningen jeg skulle lage et program som kunne finne nettopp denne sannsynligheten. :roll:
Men hvordan sorterer man de tre tallene i stigende rekkefølge?
Kan du hjelpe meg med en algoritme for selve å sjekke alle mulighetene?

Tusen takk for hjelpenBilde
meg
Fibonacci
Fibonacci
Innlegg: 4
Registrert: 08/12-2004 00:45

meg skrev: Kan du hjelpe meg med en algoritme for selve å sjekke alle mulighetene?
Det skal selvfølgelig stå:
Kan du hjelpe meg med en algoritme for å sjekke alle mulighetene?
oro2
Guru
Guru
Innlegg: 655
Registrert: 23/11-2003 01:47
Sted: Bergen

Her er et enkelt javaprogram som tar for seg alle kombinasjoner av hele minutter, og tester om badet er opptatt på den måten ThomasB forklarte.

Det er i java, hvis du ikke kjenner til det kan jeg skrive i pseudokode.. Den nederste metoden bare sorterer de tre tidspunktene ved hjelp av boblesortering. Med så små datamengder (3 tall) er det raskt nok med den.

Output etter kjøring: 0.508888888888889

Kode: Velg alt

public class GetUp {

	public static void main(String[] args) {
		int[] tab = new int[3];
		int nuNoWait = 0; //teller opp antall ganger de ikke må vente
		for (int a = 0; a < 60; a++)
			for (int b = 0; b < 60; b++)
				for (int c = 0; c < 60; c++){ 
					tab[0] = a;
					tab[1] = b;
					tab[2] = c;
					bobleSort(tab); //sorterer tallene
					if (tab[1] - tab[0] > 5 &&  
						tab[2] - tab[1] > 5 && 
						tab[2]- tab[0] > 20)
						nuNoWait++;
					
				}
		double prob = (double) nuNoWait/(60*60*60); 
		System.out.println(1-prob);
					
	}
	
	private static void bobleSort(int[] arr)
	{
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
            	int a,b;
            	a = arr[i];
                b = arr[j];
                if ( a>b) {
                    arr[i] = b;
                    arr[j] = a;         
                }
            }
        }
	}
}
meg
Fibonacci
Fibonacci
Innlegg: 4
Registrert: 08/12-2004 00:45

Ja takk, tar gjerne i mot pseudokode :wink:
oro2
Guru
Guru
Innlegg: 655
Registrert: 23/11-2003 01:47
Sted: Bergen

Vet ikke om det blir helt pseudokode... innblandet litt prosa forklaring :wink:

Kode: Velg alt


nuNoWait //vaiabel som teller antall ganger ingen må vente på badet

//med denne triple nøstingen går vi gjennom alle tilfeller som er mulig
//i alt 60^3 tilfeller

FOR a fra og med 0 til og med 59{
	FOR b fra og med 0 til og med 59{
		FOR c fra og med 0 til og med 59{

			SORTER a, b og c i stigende rekkefølge og kall de t1, t2, t3
			IF ((t2-t1 > 5)  AND 
				(t3-t2 > 5) AND 
				(t3-t1 > 20) ){

					ØK nuNoWait med 1

			}//IF slutt

		}//FOR slutt

	}//FOR slutt

}FOR slutt

sansynlighet for at ingen måtte vente = nuNoWait/60^3
sansynlighet for at minst en må vente minst 10 min = 1 - (sansynlighet for at ingen måtte vente)
		
Svar