tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
8024
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    WenzelPaul WenzelPaul ist offline Mitglied Bronze
    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.

    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 ];
        static 
    int[ ] temp =  new int ];
        
        
        public static 
    void main(String[] argsthrows IOException
        
    {
            
    int i =0;
            
            
    int z1 =1;
            for (
    =0<=6i++)
            {    
                    
    temp[z1] = zufallszahl.nextInt(49);
                    while(
    temp[z1] != ziehung[i])
                    {
                    
    ziehung[i] = temp[z1];
                    }
                    
    System.out.println(ziehung[i]);            
            }
        }

    Es muss ja an der Bedingung der while Schleife liegen denke ich mal.
    Wie bekomme ich das mit meinem Code hin, dass ich keine Wiederholungen habe?
     

  2. #2
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    Ich glaube da musst du eben manuell prüfen und gegebenenfalls ersetzen. Dürfte ja auch nicht so schwer sein bei 6 Zahlen.

    Zitat Zitat von WenzelPaul Beitrag anzeigen
    PHP-Code:
        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}; 
    Aber mal ne Frage, wofür diese Zeile, bzw dieses Array
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  3. #3
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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

    Sascha
    Geändert von zerix (17.03.08 um 16:34 Uhr)
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  4. #4
    WenzelPaul WenzelPaul ist offline Mitglied Bronze
    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.
     

  5. #5
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  6. #6
    TheJadix TheJadix ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Bremerhaven
    Beiträge
    220
    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ß Jadix
    Geändert von TheJadix (17.03.08 um 17:16 Uhr) Grund: Kleiner Nachtrag zum besseren Verständniss
     
    Signatur ? ? ? So ein Humbug ! ! !

  7. #7
    Stigma Stigma ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Ort
    Lübeck
    Beiträge
    412
    Zitat Zitat von WenzelPaul Beitrag anzeigen
    Hallo,
    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.

    PHP-Code:
        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}; 
    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.
     

  8. #8
    WenzelPaul WenzelPaul ist offline Mitglied Bronze
    Registriert seit
    May 2007
    Beiträge
    44
    Zitat Zitat von Sascha Schirra Beitrag anzeigen
    Du hättest ja auch erwähnen können, dass du die Variablen so nutzen musst.
    Sascha
    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 !
     

  9. #9
    Stigma Stigma ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Ort
    Lübeck
    Beiträge
    412
    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)
     

  10. #10
    WenzelPaul WenzelPaul ist offline Mitglied Bronze
    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"
     

  11. #11
    Stigma Stigma ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Ort
    Lübeck
    Beiträge
    412
    Zitat Zitat von Stigma Beitrag anzeigen
    So erzeugt man eine Zufallszahl
    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 
    PHP-Code:
    int[ ] lottozahl // int[ y ] y ist der Index 
    P.S. Die Zufallszahl ist nicht die Zahl die du ziehst sondern soll den Index des Arrays sein!
    Geändert von Stigma (17.03.08 um 20:18 Uhr)
     

  12. #12
    Stigma Stigma ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Ort
    Lübeck
    Beiträge
    412
    Ich habe mir gerade dein Profil durchgelesen und einen kurzen Blick auf deine bisherigen Beiträge geworfen. Du hattest schon einmahl Probleme mit Zufallszahlen.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
     
    Code:
    int zz=(int)(1+Math.random()*100); == z.B. 29
     
    Erklärung:
     
    Typ                    int                                            
    Name                   zz
    ist  zuweisen          = 
    als int casten         (int) 
    von                    (1+
    Zufallszahl            Math.random()
    bis                    *100);
    Geändert von Stigma (17.03.08 um 20:29 Uhr)
     

  13. #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ß Tom
     
    Java 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

  14. #14
    LilViper Tutorials.de Gastzugang
    super lösung! danke hat mir gut geholfen.
     

  15. #15
    Artu 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

  1. Zufallszahl ohne Wiederholung RND
    Von aquila im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 01.08.08, 09:12
  2. Hintergrund ohne "wiederholung"
    Von damei2000 im Forum CSS
    Antworten: 3
    Letzter Beitrag: 14.04.06, 19:49
  3. Wiederholung OHNE Looping
    Von TobiTinti im Forum 3D Studio Max
    Antworten: 2
    Letzter Beitrag: 22.09.04, 12:39
  4. [MX]Bilder verschieben per Zufallszahl und Array
    Von Seniler Zirkusaffe im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 03.05.04, 16:26
  5. festgelegte Wiederholung / kopfgesteuerte Wiederholung
    Von Simone im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 21.01.03, 12:40