3 svar
168 visningar
Josanna 28
Postad: 19 jan 2023 12:13

Slumptal

Hej!

Jag ska skriva ett program som kastar två tärningar 100 gånger och summerar båda. Jag ska sen skriva ut hur många gånger varje summa har förekommit.

Jag har gjort en forloop med tärningskasten och plussat ihop dom så jag har tärningssumma. Jag har fastnat på hur jag ska få ut frekvensen för varje summa? (Det är en träningslab, så ingen inlämningsuppgift).

Random random = new Random();
		int tärningSum;
		int count = 0;
		//int tärningSum = random.nextInt(tärning1, tärning2);
		int [] array = new int[99];
		int freq [] = new int[array.length];
		
		for(int i = 0; i <array.length; i++) {
			int tärning1 = random.nextInt(6) + 1;
		int	tärning2 = random.nextInt(6) + 1;
			tärningSum = (tärning1 + tärning2);
			array[i] = tärningSum;
			
			System.out.print(tärningSum + " ");	
Fermatrix 7841 – Fd. Medlem
Postad: 19 jan 2023 12:16 Redigerad: 19 jan 2023 12:22

Du kan göra det med en hashmap, där du mappar frekvens mot en summa. 

Annars kan du ha en array mappad från 0-9 som anger frekvens för en given summa.

Laguna Online 28587
Postad: 19 jan 2023 12:53

0 till 10 är bättre (som får representera 2 till 12). Eller helt enkelt 0 till 12 så kan man använda summorna som index direkt.

zino92 56
Postad: 30 nov 2023 07:04 Redigerad: 30 nov 2023 07:05

Det finns många sätt du kan lösa detta på.

Första steget blir hur du ska hålla koll på de respektive summorna.

Fermatrix förslag där du isf. skapar en array funkar, med som Laguna påpekade 11 platser (index 0-10 - Då det totalt kan bli 11 summor från tärningskast med 2 tärningar. du kan kontrollräkna möjliga summor för att försäkra dig om detta) och får då tänka dig att index 0 t ex. lagrar tärningssumman 2, index 1 tärningssumman 3, osv.

Summorna kan ju bli: 2,3,4,5,6,7,8,9,10,11 eller 12.

När du sen förberett din array som ska lagra summorna så kan du loopa igenom din array variabel som håller summorna, och ha en if-sats med 11 grenar (kanske inte det mest effektiva, men det funkar), switch hade också kunnat användas här, kanske tillochmed aningen mer effektivt då du slipper skriva om variabeln som testas.

Därefter för varje case (i en switch) eller gren (i en if) kontrollerar du vad summan på array[i] för din loop-iteration är, och om den matchar summan 2, lägger du den i arraySumFreq[0] (eller vad du nu väljer att kalla din nya array för lagring av summa frekvens) t ex. osv.

Hoppas det kan hjälpa :)

Svara Avbryt
Close