CodeKitHub
Instrumente generatoare

Randomizator de Liste Gratuit

Ultima actualizare:

Lipește o listă — nume, sarcini, participanți la o tombolă, orice — câte un element pe linie, și amestec-o într-o ordine aleatorie corectă folosind un adevărat algoritm Fisher-Yates. Activează modul „alegere câștigători” pentru a extrage doar N elemente aleatorii, util pentru a alege un câștigător la un giveaway sau pentru a atribui o ordine aleatorie fără a dezvălui întreaga listă amestecată.

Ce este acest instrument?

Un randomizator de liste reordonează un set de elemente într-o secvență aleatorie sau extrage un subset aleatoriu din acesta. Partea dificilă este să faci asta fără părtinire: o abordare naivă, precum sortarea unui array cu o funcție de comparație aleatorie, produce o distribuție deformată, în care unele ordini apar mult mai frecvent decât altele.

Acest instrument folosește algoritmul de amestecare Fisher–Yates (Durstenfeld), metoda standard pentru o permutare aleatorie demonstrabil uniformă — fiecare ordine posibilă a listei tale are șanse egale să apară.

De ce să-l folosești?

  • Amestecare cu adevărat imparțială — Fisher–Yates, nu anti-modelul frecvent sort(() => Math.random() - 0.5), care deformează rezultatele.
  • Mod „alegere câștigători”: extrage exact N elemente aleatorii în loc să amesteci întreaga listă, ideal pentru tombole și giveaway-uri.
  • Opțiune de eliminare a duplicatelor înainte de amestecare, pentru liste care pot avea repetări accidentale.
  • Funcționează cu orice text — nume, sarcini, bilete, premii — câte un element pe linie.
  • Privat: amestecarea are loc complet în browserul tău, nimic nu este încărcat.

Cum se folosește

  1. Lipește lista ta în câmp, câte un element pe linie.
  2. Opțional, bifează „elimină duplicatele înainte de amestecare” dacă lista poate conține repetări.
  3. Pentru o reordonare completă, apasă doar Amestecă. Pentru alegerea câștigătorilor, bifează opțiunea N-elemente și setează câte vrei să extragi.
  4. Copiază rezultatul — apasă din nou Amestecă oricând pentru o nouă ordine aleatorie sau o nouă extragere.

Exemplu

Intrare

Alice
Bob
Charlie
Diana
Ethan

Rezultat

O listă reordonată aleatoriu, precum Charlie, Ethan, Alice, Diana, Bob — diferită de fiecare dată când apeși Amestecă.

Cu modul „alegere câștigători” setat la 2, aceeași intrare ar putea produce în schimb doar Ethan și Alice — o extragere aleatorie de 2 elemente, nu o secțiune de 2 elemente dintr-o singură ordine amestecată.

De ce o amestecare naivă produce rezultate părtinitoare

sort(() => Math.random() - 0.5) este un truc frecvent care pare corect, dar nu este: se bazează pe faptul că algoritmul de sortare apelează comparatorul de un anumit număr de ori, într-un tipar specific, iar implementările reale de sortare nu garantează asta. Efectul practic este o amestecare în care anumite ordini apar mai des decât altele — suficient de subtil pentru a trece neobservat la o privire superficială, dar măsurabil statistic pe termen lung.

Fisher–Yates ocolește complet problema: în loc să ceară unui algoritm de sortare să producă aleatorietate indirect, interschimbă direct fiecare poziție cu o poziție rămasă, aleasă aleatoriu, exact o dată, ceea ce este demonstrabil uniform indiferent de implementarea de sortare a limbajului folosit.

Generator de Numere Aleatorii · Generator de UUID

Întrebări frecvente

De ce să nu folosesc pur și simplu array.sort(() => Math.random() - 0.5)?

Acea linie este un anti-model bine cunoscut: sort() din JavaScript nu garantează că fiecare pereche de elemente este comparată de același număr de ori, așa că ordinea rezultată este vizibil părtinitoare către anumite permutări — unele elemente ajung să aibă șanse mai mari să se poziționeze aproape de început sau de sfârșit decât ar produce o adevărată aleatorietate. Fisher–Yates evită complet acest lucru prin construcție, și este exact algoritmul implementat de acest instrument.

Amestecarea este cu adevărat imparțială?

Da. Fisher–Yates parcurge lista o singură dată, iar la fiecare pas interschimbă elementul curent cu un element ales uniform aleatoriu din porțiunea rămasă neamestecată. Este demonstrat matematic că produce fiecare ordine posibilă cu probabilitate egală, dată fiind o sursă bună de aleatorietate (Math.random() din JavaScript).

Care este diferența dintre amestecare și modul „alegere câștigători”?

Modul Amestecare reordonează fiecare element din lista ta și îți arată toate elementele, doar într-o nouă ordine. Modul „alegere câștigători” extrage doar N elemente aleatorii și le afișează doar pe acelea — util atunci când vrei să selectezi un număr fix de câștigători sau eșantioane fără a dezvălui întreaga listă reordonată.

Pot folosi asta pentru o tragere la sorți reală sau o tombolă?

Da, pentru giveaway-uri și trageri informale funcționează bine, deoarece aleatorietatea este cu adevărat uniformă. Pentru o tombolă reglementată legal, cu premii în bani, verifică legislația locală — unele jurisdicții impun un proces de extragere specific, auditabil.

Eliminarea duplicatelor îmi modifică lista originală?

Nu — deduplicarea afectează doar rezultatul amestecat, și doar atunci când opțiunea este activată. Lista ta de intrare rămâne exact așa cum ai scris-o, deci poți comuta opțiunea și reamesteca fără a retasta nimic.

Instrumente similare