Avatar billede tinaw25 Nybegynder
21. marts 2014 - 14:18 Der er 1 kommentar og
1 løsning

random class forhindre duplicates

hejsa

Jeg skal lave en metode som gør at random class ikke udskriver de samme tal 2 gange.

Jeg er lige startet på at programmere java, så har kun lært for loop, while loop, array, if, else

Så det er også de ting jeg må bruge til at løse opgaven.

Jeg kan simpelthen ikke se hvad jeg gør forkert, jeg går ind og tjekker om de tal der er i array om de er de samme og hvis de er skal der køres en omgang nye random numbers.

Det er denne her kode jeg har indtil videre:

public static void drawNumbers() throws Exception
  {
     
      Random rand = new Random();
     
      int[] randNumber = new int[6];
      System.out.print("Lotto numbers this week: ");
     
      String k = ""; 
      int countWin =0;
      int i = 0;
      int countRand = 0;
       
    while(i <=randNumber.length)
    {
     
      Thread.sleep(1000);
     
      randNumber[i] = rand.nextInt(20)+1;
     
      countRand++;
     
      if(randNumber[0] == randNumber[1] && randNumber[0] == randNumber[2] && randNumber[0] == randNumber[3] && randNumber[0] == randNumber[4] && randNumber[0] == randNumber[5] && randNumber[1] == randNumber[2] && randNumber[1] == randNumber[3] && randNumber[1] == randNumber[4] && randNumber[1] == randNumber[5] && randNumber[2] == randNumber[3] && randNumber[2] == randNumber[4] && randNumber[2] == randNumber[5] && randNumber[3] == randNumber[4] && randNumber[3] == randNumber[5] && randNumber[4] == randNumber[5])
      {
     
        randNumber[i] = rand.nextInt(20)+1;   
     
      }
      else
      {
     
        System.out.print(randNumber[i] + " ");
           
      }
     
        if(countRand == 6)
        {
       
            break;
        }
       
    }
   
      System.out.println(); 
     
  }
Avatar billede tinaw25 Nybegynder
21. marts 2014 - 22:44 #1
fik den løst selv
Avatar billede arne_v Ekspert
23. marts 2014 - 04:09 #2
Et par forslag som nok gaar udover hvad I har laert:


import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class Lotto1 {
    private static final int PICKS = 6;
    private static final int MAX = 20;
    public static void main(String[] args) {
        Random rng = new Random();
        ArrayList<Integer> lst = new ArrayList<>();
        for(int i = 0; i < PICKS; i++) {
            int v;
            do {
                v = rng.nextInt(MAX) + 1;
            } while(lst.contains(v));
            lst.add(v);
        }
        Collections.sort(lst);
        for(int v : lst) {
            System.out.println(v);
        }
    }
}



import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Lotto2 {
    private static final int PICKS = 6;
    private static final int MAX = 20;
    public static void main(String[] args) {
        Random rng = new Random();
        ArrayList<Integer> all = new ArrayList<>();
        for(int i = 0; i < MAX; i++) {
            all.add(i + 1);
        }
        Collections.shuffle(all, rng);
        List<Integer> lst = all.subList(0,  PICKS);
        Collections.sort(lst);
        for(int v : lst) {
            System.out.println(v);
        }
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester