ÖVNINGSUPPGIFT

Uppgift 3 – Simulera tärningskast

Försök själv först. Ledtrådar och facit finns längre ner – helt utan inloggning.


Nyckelord: Random, Loopar

I denna uppgift ska vi simulera ett tärningskast. Skapa en loop som "kastar" en tärning n gånger. Använd klassen Random för att skapa slumptal mellan 1 och 6. Beräkna sedan medelvärdet på tärningskasten.

Kasta tärningen:

  • 10 gånger
  • 100 gånger
  • 1000 gånger
  • 10000 gånger
  • 100000 gånger
  • 1000000 gånger

Hur skiljer sig medelvärdet mellan de olika omgångarna? Vilket tal går medelvärdet mot?

Utgå från följande program:

public class LooparUppgift3 {
    public static void main(String[] args) {
        // Skriv din kod här
    }
}
Ledtråd

Man kan skapa ett slumptal med klassen random som man kan importera med följande kod:

import java.util.Random;               // Importerar klassen Random

Ett slumptal kan sedan skapas med:

Random rand = new Random();             // Skapar en instans av klassen random                       
int randomInt = rand.nextInt(6) + 1;    // Genererar ett slumptal av typen int i intervallet 1 till 6

Eftersom antal tärningskast är av bestämt antal, lämpar det sig bäst att använda sig av en for-loop för att lösa uppgiften.

Lösning

Vi kan beräkna medelvärdet av ett godtyckligt antal tärningskast med följande kod:

import java.util.Random;                        // Importerar klassen Random                                     
public class LooparUppgift3 {                                                                                    
    public static void main(String[] args) {                                                                     
        int nmbrOfRolls = 1000000;                                                                             
        double sum = 0;                                                                                          
                                                                                                                 
        Random rand = new Random();
        for(int i = 0; i < nmbrOfRolls; i++){
            int randomInt = rand.nextInt(6) + 1;    // Genererar ett slumptal av typen int i intervallet 1 till 6
            sum += randomInt;                                                                                    
        }                                                                                                        
                                                                                                                 
        double mean = sum/nmbrOfRolls;                                                                           
        System.out.println(mean);                                                                                
                                                                                                                 
    }                                                                                                            
}                                                                                                                

Desto fler kast man gör, ju närmre går medeltalet mot 3,5. Det är förstås logiskt eftersom (1+2+3+4+5+6)/6 = 3,5. Det är ju förstås lika stor sannolikhet för varje siffra (1-6) att inträffa. Men när man bara kastar några få kast är det stor sannolikhet att några av talen uppkommer oftare än något annat (på grund av slumpen). Men desto fler kast man gör, ju mindre kommer resultaten skilja sig åt. Därför går medelvärdet mot 3,5.