losowanie kolorów bez powtórzenia

0

chcę zrobić w builderze c++ tablice do której będą zapisywane losowe, niepowtarzające się kolory, nie mam pojęcia jak to zrobić, proszę Was o pomoc

0

optymalne rozwiązanie zależy od tego ile około tych kolorów chcesz wylosować.

jak jest mało:
robisz stlową mapę kolorów to losujesz tak długo aż trafisz na nieużyty kolor i później wrzucasz go do mapy.

jak jest dużo:
zapisujesz sobie ile kolorów już wylosowałeś, wylosowany element wrzucasz do drzewa, które musisz zaprojektować tak, żeby szybko znaleźć i-ty nieustawiony kolor.

Granicę między dużo, a mało musisz znaleźć doświadczalnie.

0

kolorów będę potrzebować ok 25-30, jestem całkowicie zielony i nie wiem jak to zrobic...

1

Albo stwórz tablicę kolorów, a potem losuj z niej kolor i ustawiaj na końcu tablicy, po czym zmniejszasz zakres losowania o 1.

int kol[30] = {0, 1, 2, 3, 4, 5, 6, ... , 29 };
unsigned int los;

for(int i = 0; i < 30; ++i)
{
    los = rand() % (30 - i);
    swap(kol[los], kol[30 - i]);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0