ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
8024
8024
EMPFEHLEN
-
17.03.08 16:20 #1
- Registriert seit
- May 2007
- Beiträge
- 44
Hallo,
ich versuche mich grad mal wieder an Java Spielerein
Ich wollte jetzt bischen mit Lotto zahlen rumspielen.
Ich habe ein Array wo die ganze Zahlen 1-49 abgespeichert sind.
Ich kann auch welche erstellen aber wie vermeide ich Wiederholungen.
Beim Lotto werden die Zahlen ja auch nicht doppelt gezogen.
Es muss ja an der Bedingung der while Schleife liegen denke ich mal.PHP-Code:import java.io.IOException;
import java.util.Random;
public class lotto
{
static Random zufallszahl = new Random();
static int[ ] lottozahl = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49};
static int[ ] ziehung = new int [ 7 ];
static int[ ] temp = new int [ 7 ];
public static void main(String[] args) throws IOException
{
int i =0;
int z1 =1;
for (i =0; i <=6; i++)
{
temp[z1] = zufallszahl.nextInt(49);
while(temp[z1] != ziehung[i])
{
ziehung[i] = temp[z1];
}
System.out.println(ziehung[i]);
}
}
}
Wie bekomme ich das mit meinem Code hin, dass ich keine Wiederholungen habe?
-
17.03.08 16:25 #2"... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
Hallo,
du könntest das ganze einfach in ein Set packen. Wenn das Set dann die Size von 7 hat, kann die Schleife beendet werden.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
import java.util.HashSet; import java.util.Random; import java.util.Set; public class Lotto { public static void main(String[] args) { Random random = new Random(); Set<Integer> lotto = new HashSet<Integer>(); while(lotto.size() < 7){ lotto.add(random.nextInt(49)); } for(Integer i : lotto){ System.out.println(i); } } }
MFG
SaschaGeändert von zerix (17.03.08 um 16:34 Uhr)
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
17.03.08 17:04 #4
- Registriert seit
- May 2007
- Beiträge
- 44
int[ ] lottozahl = { 1, 2, 3, 4, 5, 6, 7, ... , 49};
int[ ] ziehung = new int [ 6 ] ;
int[ ] tipp = new int [ 6 ] ;
sollen die Variablen sein die wir verwenden sollen ... das ja mein problem :[
Ein Programm in dem die Ziehung der Lottozahlen durch Zufallswerte simulieren werden. Eine Ziehung besteht aus 6 Zufallszahlen aus dem Intervall [1 ... 49], wobei sich keine Zufallszahl wiederholen darf. Ein Tipp besteht auch aus 6 Zahlen, die hier ebenfalls per Zufall aus dem Intervall [1 ... 49] ohne Wiederholung gewählt werden.
Das mit dem Set ist ja nett und ideal für sowas aber halt nicht mit den Variablen.
-
Du kannst die Zahlen ja danach in die Variablen schreiben. Du hättest ja auch erwähnen können, dass du die Variablen so nutzen musst.
Wenn du es ganz in die Variablen machen musst, musst du halt bei jeder Zahl kontrollieren ob sie nicht schon im Array steht. Falls sie drin steht, lässt du dir die nächste Zahl geben und testest die. Das ganze geht dann so lange bis das Array gefüllt ist.
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Hi,
oder du nimmst die Zahl aus dem lottozahl-Array herraus (setzt sie 0) und
prüfst darauf nach dem erzeugen der Zufallszahlen (index 0-48 fürs Array) !
Hat sowas realistisches, die Kugeln sind ja auch raus aus dem Ziehungsgerät !
Gruß JadixGeändert von TheJadix (17.03.08 um 17:16 Uhr) Grund: Kleiner Nachtrag zum besseren Verständniss
Signatur ? ? ? So ein Humbug ! ! !
-
Die Lösung die du suchst ist folgende:
Du hast deinen Array. Diesen füllst du am besten mit zahlen aus einer for-Schleife die bis 48 geht. Nun erzeugst du eine Zufallszahl der du einem bestimmten Wertebereich zuweist. Du schränkst die Zufallszahlen suche auf 1 und 49 ein. Hast du nun eine Zahl gezogen kommt die letze Zahl aus dem Array an deren Position und dein Zufallsgenerator wird um eins kleiner. Damit ist es unmöglich eine Zahl doppelt zu ziehen.
Ich hoffe ich konnte dir helfen und würde mich über eine Rückmeldung sehr freuen. Sollten weitere Probleme entstehen dann sag nur bescheid.
-
17.03.08 19:47 #8
- Registriert seit
- May 2007
- Beiträge
- 44
Das meinte ich mit meinem letzten Satz.
"Wie bekomme ich das mit meinem Code hin, dass ich keine Wiederholungen habe?"
Tut mir aber Leid wenn es nicht deutlich rüber kam.
Das Problem allgemein ist, dass ich es einfach nicht hinbekomme. Ideen hab ich auch schon genug gehabt heute. Sitze schon seit heut morgen daran.(jaja lacht nur ;() Hab schon vieles ausprobiert aber bin immer irgendwo hängen gegeblieben.
Das was ich bräuchte ist Beispiel Code.
Ganz normale Zufallslottozahlen erstellen und ziehen ohne Array und ohne Wiederholungen hab ich heute auch schon programmiert. Ich dachte das bringt mich weiter aber nix da.
Vielleicht weiß ja noch jemand was.
Danke aber schonmal !
-
Hast du das Gelesen?
Die Lösung die du suchst ist folgende:
Du hast deinen Array. Diesen füllst du am besten mit zahlen aus einer for-Schleife die bis 48 geht. Nun erzeugst du eine Zufallszahl der du einem bestimmten Wertebereich zuweist. Du schränkst die Zufallszahlen suche auf 1 und 49 ein. Hast du nun eine Zahl gezogen kommt die letze Zahl aus dem Array an deren Position (die gezogene Zahl verschwindet und steht ab nun nicht mehr im Array) und dein Zufallsgenerator wird um eins kleiner. Damit ist es unmöglich eine Zahl doppelt zu ziehen.
Ich hoffe ich konnte dir helfen und würde mich über eine Rückmeldung sehr freuen. Sollten weitere Probleme entstehen dann sag nur bescheid.Geändert von Stigma (17.03.08 um 19:52 Uhr)
-
17.03.08 19:58 #10
- Registriert seit
- May 2007
- Beiträge
- 44
Jo hab ich gelesen.
Weiß nur nicht so recht wie ich das umsetzen soll.
Insbesondere nicht den Teil "Hast du nun eine Zahl gezogen kommt die letze Zahl aus dem Array an deren Position (die gezogene Zahl verschwindet und steht ab nun nicht mehr im Array) und dein Zufallsgenerator wird um eins kleiner"
-
Um einen Array anzusprechen benötigt man die Ideces! Du kannst sagen Array x mit dem Index 49 soll an stelle von der gerad gezogenen Zufallszahl. Danach verkleinerst du deinen Wertebereich um eins.
Das ganze machst du 6mal.
PHP-Code:zufallszahl.nextInt(49); // -1
P.S. Die Zufallszahl ist nicht die Zahl die du ziehst sondern soll den Index des Arrays sein!PHP-Code:int[ ] lottozahl // int[ y ] y ist der Index
Geändert von Stigma (17.03.08 um 20:18 Uhr)
-
Ich habe mir gerade dein Profil durchgelesen und einen kurzen Blick auf deine bisherigen Beiträge geworfen. Du hattest schon einmahl Probleme mit Zufallszahlen.
Geändert von Stigma (17.03.08 um 20:29 Uhr)
-
17.03.08 20:29 #13
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
schau mal hier:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
/** * */ package de.tutorials; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; /** * @author Thomas.Darimont * */ public class Lottery { /** * @param args */ public static void main(String[] args) { Random random = new Random(); List<Integer> candidates = new ArrayList<Integer>(); for (int i = 1; i < 50; i++) { candidates.add(i); } int[] numbers = new int[6]; for (int i = 0; i < numbers.length; i++) { int candidateIndex = random.nextInt(candidates.size()); numbers[i] = candidates.get(candidateIndex); candidates.remove(candidateIndex); } System.out.println(Arrays.toString(numbers)); } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
12.02.10 01:56 #14LilViper Tutorials.de Gastzugang
super lösung! danke
hat mir gut geholfen.
-
29.04.10 14:18 #15Artu Tutorials.de Gastzugang
java Code:
import java.io.IOException;
import java.util.Random;
public class lotto {
static Random zufallszahl = new Random();
static int[] ziehung = new int[7];
public static void main(String[] args) throws IOException {
{
ziehung[0] = zufallszahl.nextInt(48) + 1;
for (int i = 1; i < 6; i++) {
int z1 = zufallszahl.nextInt(48) + 1;
for (int z = 0; z < i; z++) {
if (z1 == ziehung[z]) {
i--;
z=100;
}else{
ziehung[i] = z1;
}
}
}
for (int i = 0; i < 6; i++) {
System.out.println(ziehung[i]);
}
}
}
}
Ähnliche Themen
-
Zufallszahl ohne Wiederholung RND
Von aquila im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 01.08.08, 09:12 -
Hintergrund ohne "wiederholung"
Von damei2000 im Forum CSSAntworten: 3Letzter Beitrag: 14.04.06, 19:49 -
Wiederholung OHNE Looping
Von TobiTinti im Forum 3D Studio MaxAntworten: 2Letzter Beitrag: 22.09.04, 12:39 -
[MX]Bilder verschieben per Zufallszahl und Array
Von Seniler Zirkusaffe im Forum Flash PlattformAntworten: 3Letzter Beitrag: 03.05.04, 16:26 -
festgelegte Wiederholung / kopfgesteuerte Wiederholung
Von Simone im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 21.01.03, 12:40





Zitieren


Login





