Liczby pseudolosowe bez powtórzeń

Liczby pseudolosowe bez powtórzeń
Heros826
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Witam, długo szukałem odpowiedzi na nurtujące mnie pytanie, ale nie mogę znaleźć tego na czym mi zależy. Mianowicie jak zrobić (najlepiej za pomocą tablic) aby liczby były losowane, ale nie mogły się powtarzać? Wrzucam kod, który jest błędny, ale może lepiej pokaże o co mi chodzi

Kopiuj


public class RandomMaybe {
	public static void main(String[]args) {
	
	int[]board=new int[6];
	int[]hex=new int[6];

	for(int i=0; i<board.length; i++) {
		board[i]=(int)(Math.random()*49)+1;
		
	}
	
	hex[0]=board[0];
	hex[1]=board[1];
	hex[2]=board[2];
	hex[3]=board[3];
	hex[4]=board[4];
	hex[5]=board[5];
	
	
	
		
		for(int z=1; z<board.length; z++) {
			if(hex[z-1]==board[z]) {
				board[z]=(int)(Math.random()*48)+1;
			}
		}
		
		for(int w: board) {
			System.out.println(w);
		}
	}
  }
  • Rejestracja: dni
  • Ostatnio: dni
1

Może zainteresuj się zbiorami ( kolekcja Set ), tam wartości nie mogą się powtarzać i jest to szybko sprawdzane przy wstawianiu danych.

CS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 296
1

Wypełnij tablicę kolejnymi liczbami np od 1 do 1000, a potem losuj dwa indeksy i zamieniaj miejscami liczby pod nimi, jak wymieszasz to masz tablicę liczb w losowej kolejności, ale żadna się nie powtarza, Twoje losowanie to pobieranie kolejnych liczb z tablicy

LP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 366
1

Można to zrobić przy pomocy Collections.shuffle (kod jest bardzo poglądowy):

Kopiuj
import java.util.Collections;
import java.util.List;

public class HelloWorld {

    public static void main(String[] args) {

        List<Integer> numbers = new ArrayList<>();

        for(int i = 0 ; i < 50 ; i++) {
            numbers.add(i);
        }

        Collections.shuffle(numbers);

        for(int element : numbers) {
            System.out.print(element+" ");
        }
    }
}
CS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 296
0

Jest jeszcze, jak dobrze pamiętam, LFSR , który generuje losowy ciąg, których wartości w okresie się nie powtarzają.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.