Losowa lista z innej listy. Najszybszy algorytm.

0

Witam. Mam listę
a = [1,2,3,4,5]
Jak można szybko utworzyć listę B z losowymi elementami listy a. Elementy nie mogą się powtarzać. Czyli jak pomieszać losowo listę a? Mam np. 16 milionów elementów. Trwa to bardzo długo. Czy istnieje szybki sposób?

1

Na wejściu i wyjściu musi być lista czy może być tablica ?
Z zapisu wynika, że masz tablicę.

Tak ogólnie to musisz poszukać algorytmów tasowania.
Pracując na tablicy losuje się 2 indeksy i zamienia wartości miejscami.
W sumie na liście też można użyć 2 wskaźniki i zamieniać wartości.

0

O tym nie pomyślałem. Dzięki.
Z zapisu wynika, że masz tablicę. A jaka róznica między listą, a tablicą? Są tablice w pythonie? Sorki, ale nie wiem.

1

A nie wystarczy Ci najprostsze rozwiązanie ?

a = [1,2,3,4,5]
b = a[:]
random.shuffle(b)
0

W pythonie pisze 2 lata, ale wciąż mnie zaskakuję. Dzięki.

0

Czas algorytmu shuffle jest liniowy, dla dużych tablic będzie to zawsze trochę trwało.

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