Hjälp med simulering av tärningskast

Permalänk
Medlem

Hjälp med simulering av tärningskast

Hej, jag sitter fast på en uppgift som jag inte förstår mig på riktigt. Såhär ser uppgiften ut:

Skapa ett program som simulerar tärningskast!

A) Skriv en klassmetod som skapar en array med 100 platser.
Kalla metoden dice()
Fyll arrayen med slumptal mellan 1 och 6.
Returnera arrayen.

B) Skapa en main-metod och anropa klassmetoden dice()
Skriv ut arrayen i terminalen/kommandotolken.

Jag förstår inte riktigt hur jag ska konstruera metoden. Så här har jag skrivit än så länge :

public class Metoder {
public static void dice(int[] a){
a = new int[100];
for (int i = 0; i<a.length; i++){

}

}
}
Det jag har skrivit antar jag jag betyder att i ska löpa igenom alla komponenter i a. Och under for satsen så antar jag att man ska skriva något med metoden random. Uppskattar alla svar

Caps-rubrik smått korrigerad. // MOD
Permalänk
Medlem

Meningen är att du ska skapa arrayen i metoden och returnera den, men just nu tar du en array som argument (som du sen struntar i och allokerar en ny array) och returnerar ingenting. För att generera slumptal kan du använda Random.Next.

Permalänk
Medlem

Du menar att det ska stå såhär?

public class Metoder {
public static void dice(){
int a[] = new int[100];
for (int i = 0; i<a.length; i++){
/// Vad skriver jag här?\\\

Och hur använder jag random.next?

Permalänk
Medlem
Skrivet av zavan:

Du menar att det ska stå såhär?

public class Metoder {
public static void dice(){
int a[] = new int[100];
for (int i = 0; i<a.length; i++){
/// Vad skriver jag här?\\\

Och hur använder jag random.next?

Tilldelning av arrayvärden sker på följande vis:

// Add value '5' to array on index '10' arr[10] = 5;

Du kan nog läsa dig till hur Random.next fungerar via dokumentationen på MSDN

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W

Permalänk
Medlem

På något sätt så har jag börjat närma mig slutet. Min metod ser nu ut såhär:
public class Metoder {
public static int[] dice(){
int a [] = new int[100];
Random rand = new Random();
int randNr = rand.nextInt(6)+1;

for (int i= 0; i<a.length; i++)
a[i]=randNr;

for (int d : a)
System.out.println(d);
return a;

}

}

Problemet är att varje komponent får samma siffra (1,2,3,4,5 eller 6)
Vad är lösningen här?

Permalänk
Medlem

Flytta in slumpen in i for-loopen. Annars slumpar du bara en gång.

Visa signatur

i5-7600k . GTX 1080 . 16 GB

Permalänk
Medlem

För att få bra hjälp med program i detta forum bör du ange vilket språk du skriver i och använda kod-blocks-funktionen så indenteringen bevaras. Inför framtiden.

Visa signatur

i5-7600k . GTX 1080 . 16 GB

Permalänk
Medlem
Skrivet av johanandersson:

Flytta in slumpen in i for-loopen. Annars slumpar du bara en gång.

Tack jag ska tänka på det! förstår inte hur jag ska få in den i for satsen. Vill du skicka ett exempel på hur det skulle se ut?

Permalänk
Medlem
Skrivet av zavan:

Tack jag ska tänka på det! förstår inte hur jag ska få in den i for satsen. Vill du skicka ett exempel på hur det skulle se ut?

public static int[] dice(){ int a [] = new int[100]; for (int i= 0; i<a.length; i++) { Random rand = new Random(); int randNr = rand.nextInt(6)+1; a[i]=randNr; } for (int d : a) System.out.println(d); return a; } }

Visa signatur

i5-7600k . GTX 1080 . 16 GB

Permalänk
Medlem
Skrivet av johanandersson:

public static int[] dice(){ int a [] = new int[100]; for (int i= 0; i<a.length; i++) { Random rand = new Random(); int randNr = rand.nextInt(6)+1; a[i]=randNr; } for (int d : a) System.out.println(d); return a; } }

ÅÅÅH TACK!

Permalänk
Medlem
Skrivet av johanandersson:

public static int[] dice(){ int a [] = new int[100]; for (int i= 0; i<a.length; i++) { Random rand = new Random(); int randNr = rand.nextInt(6)+1; a[i]=randNr; } for (int d : a) System.out.println(d); return a; } }

Det är ju dock rätt onödigt att skapa en ny instans av Random för varje iteration

Visa signatur

AMD Ryzen 7 1700X 3.8 GHz 20MB | ASUS PRIME X370-PRO | MSI GeForce GTX 1080 Gaming X 8GB | G.Skill 16GB DDR4 3200 MHz CL14 Flare X | Corsair RM650x 650W