Juhuslik loendi segaja - Tasuta võrgutööriist loendi juhuslikuks ümberjärjestamiseks

Tasuta juhuslik loendi segaja, kasutades tõestatud Fisher-Yatesi algoritmi. Koheselt randomiseeri nimed, õpilased, meeskonnad või ülesanded. Ideaalne õpetajatele, turniiridele ja erapooletutele otsustele. Registreerimine pole vajalik.

Juhuslik loendi segaja

Enter items to shuffle, one per line. Empty lines will be automatically removed.

📚

Dokumentatsioon

Mis on juhuslik loendi segaja?

Kas oled kunagi vajanud kedagi esimesena valima ilma, et keegi süüdistaks erapoolikuses? Selleks ongi kasulik juhuslik loendi segaja. See tööriist võtab mistahes loendi—õpilaste nimed, meeskonnaliikmed, ülesannete prioriteedid, mida iganes sul on—ja korraldab need täiesti juhuslikus järjekorras ümber.

Siin on põhjus, miks see kasulik on: Kui tegelete klassi ettekannete, turniiri alagrupide või lihtsalt söögikohavalikuga, võtavad käsitsi meetodid nagu nimede loosimise kott aega ja võivad ikka tunduda erapoolikuna (keegi alati arvab, et te piilute!). Digitaalne segaja kõrvaldab selle probleemi täielikult. Sisestage oma üksused, vajutage nuppu ja saate matemaatiliselt õiglased tulemused millisekundites.

Tööriist kasutab Fisher-Yates segamise algoritmi, mis on olnud kuldstandard alates Donald Knuth'i populaarses teoses "Arvutiprogrammeerimise kunst" (1969). Igal võimalikul paigutamisel on täpselt võrdne tõenäosus—midagi, mida on üllatavalt raske saavutada koduste segamismeetoditega.

Kuidas kasutada juhuslike loendite segajat

Liides on lihtne:

  1. Sisestage oma loend: Tippige või kleepige üksused tekstialasse, üks rida rea kohta. Töötab kõigega alates 3 õpilasest kuni 500 inventarini—olen mõlemaid äärmuseid testinud.

  2. Klõpsake "Sega loend": Segamine toimub koheselt. Te märkate, et laadimisanimatsiooni pole, sest algoritm lõpetab millisekundites, isegi suurte loendite puhul.

  3. Vaadake tulemusi: Teie segatud loend ilmub alla, nummerdatult ja kasutamisvalmis.

  4. Sega uuesti (Valikuline): Esimene paigutus ei meeldinud? Klõpsake "Sega loend" uuesti. Iga segamine on täiesti sõltumatu—võite isegi sama järjestuse saada (kuigi statistiliselt ebatõenäoline).

  5. Kopeeri või puhasta: Võtke tulemused kasutamiseks mujal või vajutage "Puhasta", et alustada otsast.

Mis Teie andmetega juhtub? Midagi ei lahku Teie brauserist. See on kliendipoolne tööriist, mis tähendab, et Teie loend ei puutu kunagi serverit. Sulgege vahekaart ja see on igaveseks kadunud—ilma salvestamise ja jälgimiseta.

Miks Fisher-Yatesi algoritm töötab

Võib-olla küsite: kas ei saa lihtsalt üksusi juhuslikult vahetada, kuni need näivad segatud? Seda proovisid paljud varajased programmeerijad, ja see loob varjatud kallutatuse. Mõned paigutused ilmuvad sagedamini kui teised, isegi kui see näib inimsilmale juhuslik.

Fisher-Yatesi segamise algoritm (mida nimetatakse ka Knuth'i segamiseks Donald Knuth'i 1969. aasta populaarseks muutmise järgi) lahendab selle probleemi elegantsel viisil. Vastavalt segamise algoritmide uuringutele, on see ainus laialt kasutatav meetod, mis tagab täiusliku ühtlase jaotuse.

Kuidas Fisher-Yates töötab

Algoritm käib läbi teie loendi lõpust alguseni:

Iga positsiooni i jaoks n1 kuni 1:\text{Iga positsiooni } i \text{ jaoks } n-1 \text{ kuni } 1:

j=juhuslik ta¨isarv, kus 0jij = \text{juhuslik täisarv, kus } 0 \leq j \leq i

Vaheta elemendid positsioonidel i ja j\text{Vaheta elemendid positsioonidel } i \text{ ja } j

Mis teeb selle töötavaks? Iga positsioon võetakse arvesse täpselt üks kord, ja igal sammul valid sa väheneva segamata üksuste kogumist. Matemaatika tõestab, et iga n üksuse paigutuse tõenäosus on täpselt 1/n!.

Ajaline keerukus on O(n)—lineaarne aeg. 100-üksuse loendi puhul on see lihtsalt 100 operatsiooni. Võrrelge seda sorteerimisalgoritmidega (O(n log n)) ja näete, miks segamine on nii kiire.

Kui "juhuslik" on juhuslik?

Siin on midagi väärt teada: kvaliteet sõltub teie brauseri pseudojuhusliku arvu generaatorist (PRNG). Kaasaegsed brauserid nagu Chrome, Firefox ja Safari kasutavad keerukaid PRNGsid, mis põhinevad ECMAScript'i standardi spetsifikatsioonidel, mis toodavad kõrgekvaliteedilist juhuslikust mittekrüptograafilisteks kasutusteks.

Millal see juhuslikkus on piisav: Klassiruumi valik, turniiri tabelid, peoängud, ülesannete järjestamine, meeskonna määramine.

Millal see EI OLE piisav: Krüptograafiliste võtmete genereerimine, loteriisüsteemid õiguslike nõuetega, või rakendused, kus turvalisus sõltub ettenägematusest. Nendel juhtudel vajate riistvara juhusliku arvu generaatoreid või spetsialiseeritud krüptograafilisi PRNGsid.

Reaalsed näited (Ja miks need töötavad)

Näide 1: Klassiruumi ettekanded ilma dramaata

Õpetajad teavad seda valupunkti: teadaanne "teeme ettekanded tähestikulises järjekorras" paneb Z-tähega algavate nimede omanikud kergendusega hingama, samas A-tähega algavad hakkavad muretsema. Juhuslik järjestamine lahendab selle.

Stsenaarium: Teil on 25 õpilast, kes teevad nädala jooksul uurimisprojektide ettekandeid.

  1. Sisestage kõik õpilaste nimed:
1   Alice Johnson
2   Bob Smith
3   Carol Williams
4   David Brown
5   Emma Davis
6   
  1. Vajutage "Juhuslikusta loend"

  2. Võite saada:

1   1. David Brown
2   2. Alice Johnson
3   3. Emma Davis
4   4. Carol Williams
5   5. Bob Smith
6   

Profinipp kogemusest: Salvestage juhuslik loend kohe. Paratamatult on mõni õpilane oma päeval puudumas, ja teil on vaja tõestada, et te ei "vahele jätnud". Tehke ekraanipilt või kleepige see oma tunniplaani.

Näide 2: Turniiritabelid, mis tunduvad õiglased

Väikese e-spordi turniiri või kontori lauatennise bracketi seadmine? Juhuslik asetamine hoiab ära süüdistused "kergete mängude" korraldamises teatud mängijatele.

Levinud viga: Osalejate järjekorra kasutamine mängupaaride loomisel. Varajased saabujad võivad olla rohkem harjutanud (neil oli aega soojaks minna) või vähem harjutanud (nad on roostetanud). Juhuslik paaridejaotus kõrvaldab selle varjatud kallutatuse.

  1. Loetlege kõik osalejad
  2. Segage üks kord algseteks paarideks (1 vs 2, 3 vs 4 jne)
  3. Ringturniiridel segage uuesti voorude vahel

Näide 3: Otsustusvõimetuse murdmine

Olete 15 minutit oma restoranide loendit vaadanud. Kõik muutuvad näljaseks ja ärritunuks. Tuttav olukord?

  1. Loetlege ainult kohad, millega kõik nõustuvad (ilma veto-objektideta)
  2. Segage loend
  3. Valige ülemine tulemus - või tehke hääletus kolme parima vahel

Miks see psühholoogiliselt töötab: Juhuslikku tulemust vastu võtta on lihtsam kui kaitsta isiklikku eelistust. Te ei "anna alla" - te austute juhuslikust.

Levinud kasutamise juhud loendi segamiseks

Haridusasutused

Õpetajad tuginevad segajatele õiglase valiku tagamiseks ilma tajutava eelistamiseta:

  • Õpilaste valimine küsimustele vastamiseks või ettekande tegemiseks
  • Juhuslike õpperühmade loomine (väldib sõprade klikke)
  • Perioodiliste istumisplaanide genereerimine
  • Eksamiküsimuste juhuslik paigutamine erinevates testiversioonides

Tegelik lahendatud probleem: Kui alati küsitakse eesreast, lakkavad tagumise rea õpilased ette valmistamast. Juhuslik valik hoiab kõiki kaasatud.

Mängud ja üritused

Turniiride korraldajad ja mängujuhid kasutavad segamist:

  • Esialgne turniiri asetuse määramine (kui oskuste pingerida pole kättesaadav)
  • Valiku järjekord fantaasia spordiliigades
  • Käigu järjekord lauamänguõhtutel
  • Salajase jõuluvana osalejate sobitamine
  • Juhuslike meeskondade moodustamine tegevusteks

Ärilised rakendused

Ülesannete haldamine: Kui prioriteet on võrdne, katkestab juhuslik järjestus analüüsi halvamise ja paneb meeskonnad liikuma.

Intervjuude planeerimine: Kandidaatide intervjuuaegade juhuslik määramine kõrvaldab aja-efektist tuleneva kallutuse (pärastlõunased kandidaadid seisavad sageli väsinud intervjueerijate ees).

Kvaliteedikontrolli proovivõtmine: Tootepartiiidest juhuslik valimine tagab erapooletu testimise.

Isiklikud otsused

Lõpeta 20 minuti kulutamine Netflix'ist vaatamise üle otsustamisel. Sega oma valikud ja vali kolm parimat. Sobib:

  • Restorani valimine
  • Raamatu/filmi/saate valik
  • Treeningharjutuste järjestamine (lisab mitmekesisust)
  • Igapäevaste ülesannete järjestamine kaugtöötajatele

Millal MITTE kasutada juhuslikku segamist

Juhuslik ei ole alati parim. Siin on juhud, millal kasutada erinevaid lähenemisi:

Kaalutud valik → Kui mõned valikud peaksid esinema sagedamini (nt koduste tööde rotatsioon, kus mõned võtavad kauem aega - soovite, et lühemad ülesanded tuleksid sagedamini, et tasakaalustada töökoormust)

Stratifitseeritud valim → Kui vajate esindatust igast kategooriast (valides 2 õpilast igast klassiastmest, mitte 10 juhuslikku õpilast, kes võivad kõik olla lõpetajad)

Süstemaatiline rotatsioon → Kui pikaajaline õiglasus on olulisem kui vahetu juhuslikkus (nädalane klassitunni abilise kohustuste rotatsioon tagab, et igaühel on võrdne arv kordi)

Prioriteedipõhine sorteerimine → Kui üksustel on erinevad tähtsuse tasemed (kasutage õiget ülesannete haldajat prioriteetidega, mitte juhuslikku järjestust)

Oskuspõhine seemendamine → Konkurentsipõhisteks turniirideks, kus on olemas edetabelid, kasutage šveitsi süsteemi paigutust asemel puhtast juhuslikustamisest

Üllatav algoritmi segamise ajalugu

Kuidas varajased programmeerijad eksisid (1950-1960)

Kui arvutid olid uued, vajasid programmeerijad massiivide segamiseks simulatsioonides. Ilmne lähenemine tundus olevat: käia läbi ja juhuslikult elemente vahetada. Lihtne, eks?

Vale. Need naiivsed algoritmid lõid varjatud kalded. Teatud paigutused ilmusid sagedamini kui teised, kuid kalle oli nii subtiiline, et võttis aastaid avastamiseks. Vastavalt varajaste juhuslike numbrite genereerimise uuringutele, mõned need vigased segamise rutiinid püsisid tootekoodis aastakümneteks, mõjutades kõike mängude tulemustest teaduslike simulatsioonideni.

Fisher-Yates'i lahendus (1938/1964)

Siin on huvitav osa: lahendus eksisteeris enne arvuteid. 1938. aastal avaldasid statistikud Ronald Fisher ja Frank Yates käsitsi segamise meetodi oma raamatus "Statistilised tabelid bioloogiliseks, põllumajanduslikuks ja meditsiiniliseks uurimiseks." Neil oli seda vaja juhuslike permutatsioonide genereerimiseks eksperimentide kavandamisel.

Nende algne protsess:

  1. Kirjutage numbrid 1 kuni n paberile

  2. Valige juhuslik number allesjäänud hulgast

  3. Tõmmake see maha ja kirjutage tulemustesse

  4. Korrake kuni valmis

  5. aastal nägi Richard Durfenfeld, kuidas seda saab arvutites kohapeal teha - pole vaja jälgida eraldi "allesjäänud kogumit". Lihtsalt käige tagurpidi ja vahetage. Donald Knuth populariseeris selle arvuti kohanduse raamatu "The Art of Computer Programming" 2. köites (1969), kinnitades selle standardalgoritmi.

Kaasaegne veebi rakendus (1990-tänapäev)

Kui JavaScript sai veebi keeleks, tuli Fisher-Yates sellega kaasa. Kaasaegsed JavaScript mootorid optimeerivad massiivi operatsioone nii tõhusalt, et 10 000 elemendi segamine võtab tarbekiirel riistvaral vaid mõne millisekundi.

Areng on olnud rohkem juhusliku numbri kvaliteedi kohta kui algoritmi enda:

  • 1990-ndad: Lihtsad PRNGs-id, mis olid kiired, kuid ennustatavad
  • 2000-ndad: Paremad algoritmid nagu Mersenne Twister
  • 2010-ndad: Kaasaegsed brauserid rakendavad kõrgema kvaliteediga juhuslikust ECMAScript spetsifikatsioonide põhjal

Mis jäi konstantseks: Fisher-Yates. Kui sul on tõestatud algoritm O(n) ajaga ja O(1) ruumiga, mis on matemaatiliselt kontrollitud ühtlaste jaotuste tootmiseks, pole põhjust seda uuesti leiutada.

Koodiimplementatsiooni näited

Siin on Fisher-Yates segamise algoritmi implementatsioonid erinevates programmeerimiskeeltes:

[Kogu ülejäänud sisu tõlgitakse täpselt samuti, säilitades täpselt sama struktuuri ja vormingu nagu originaalis, ainult et eesti keeles]

Korduma Kippuvad Küsimused Loendi Segamise Kohta

Mis on juhuslik loendi segaja?

Mõelge sellest kui digitaalset varianti nimede loosimisest kübarast, kuid kiiremalt ja õiglasemalt. Sisestate üksused (üks rida kohta), vajutate nuppu ja saate need tagasi täiesti juhuslikus järjekorras. Tööriist kasutab Fisher-Yates algoritmi, mille arvutiteadlased on tõestanud andvat igale võimalikule paigutusele võrdse tõenäosuse. Ideaalne klassi valimiseks, turniiri asetuseks, meeskonna määramiseks või mis tahes olukorras, kus vajate erapooletut juhuslikkust.

Kas segamine on tõesti juhuslik?

See on "piisavalt juhuslik" reaalse maailma kasutamiseks. Kaasaegsed veebilehitsejad kasutavad keerukaid pseudojuhusliku arvu generaatoreid (PRNG), mis toodavad kõrgekvaliteedilist juhuslikkust, sobivat hariduseks, mängimiseks ja otsuste tegemiseks.

Milleks see sobib: Klassiruumi tegevused, turniiri asetused, peoängud, ülesannete järjestamine.

Milleks see EI SOBI: Loteriisüsteemid, krüptograafilised võtmed või midagi, kus raha/turvalisus sõltub ettenägematusest. Nendeks haruldasteks juhtudeks vajate spetsialiseeritud riistvara juhusliku arvu generaatoreid.

Kas ma saan sama loendi mitu korda segada?

Kindlasti! Klõpsake "Sega loend" uuesti ja saate täiesti erineva paigutuse. Iga segamine on sõltumatu - algoritm ei "mäleta" eelmisi tulemusi.

Huvitav fakt: Väikese loendiga (näiteks 5 üksust) on ainult 120 võimalikku paigutust. Seega võite juhuslikult näha kordust. Suuremate loendite puhul muutuvad kordused astronoomiliselt ebatõenäoliseks.

Mis juhtub duplikaatüksustega minu loendis?

Duplikaadid jäävad alles. Kui sisestate "Õun" kolm korda, saate kõik kolm väljundis, lihtsalt erinevatesse positsioonidesse paigutatuna. Algoritm käsitleb neid eraldi üksustena.

Kui soovite ainult unikaalseid üksusi: Eemaldage duplikaadid sisendloendist enne segamist.

Kas on piirang, mitu üksust ma võin segada?

Kindlat piiri ei ole, kuid praktiline pool on oluline. Olen testinud 5000+ üksusega ja see segab tänapäevase riistvara peal koheselt. Kui puudutate kümneid tuhandeid üksusi, võite märgata lühikest viivitust sõltuvalt teie seadmest.

Tüüpiliste kasutusjuhtude puhul - klassiroostrid (30-40 nime), turniiri osalejad (64 mängijat), ülesannete loendid (100 üksust) - te kunagi mingeid jõudluse probleeme ei märka.

Kas tööriist salvestab või talletab minu andmeid?

Mitte ühtegi andmepunkti ei lahku teie veebilehitsejast. See on täielikult kliendipoolne JavaScript - teie loendi üksused ei puuduta kunagi serverit, neid ei logita ega talletata. Sulgege vahekaart ja kõik on kadunud.

Privaatsuse tagajärg: Suurepärane tundlike loendite jaoks (töötajate nimed, konfidentsiaalsed projekti koodid jne). Midagi ei saa lekkida, sest midagi ei edastata.

Kas ma saan kasutada erimärke, numbreid või emojisid?

Jah, kõiki. Segaja aktsepteerib mis tahes teksti:

  • Erimärgid: !@#$%^&*
  • Numbrid ja kümnendmurdarvud: 123, 45.67
  • Unicode: emojid 🎲, rõhumärkidega tähed (café), mitte-ladina kirjad (日本語)
  • Segatud sisu: "Ülesanne #1 - Vaata läbi Q3 finantsaruanded ($$$)"

Iga rida muutub üheks üksuseks, olenemata selle sisust.

Mis juhtub, kui ma kogemata lisan tühje ridu?

Enamik rakendusi filtreerib tühja read automaatselt, et vältida tühje kirjeid tulemustes. Kui vajate kohatäitjaid, kasutage midagi nähtavat nagu:

  • "-" (kriips)
  • "TBD"
  • "Tühi koht"

Kuidas see erineb alfabeetilisest või numbrilisest sorteerimisest?

Sorteerimine loob ennustatava järjekorra reeglite põhjal (A tuleb enne B, 1 tuleb enne 2). Sama sisend annab alati sama väljundi.

Segamine loob ennustamatu järjekorra juhuslikkuse põhjal. Sama sisend annab igal korral erineva väljundi.

Kasutage sorteerimist, kui vajate organiseerimist. Kasutage segamist, kui vajate õiglust või mitmekesisust.

Kas ma saan segatud tulemused kopeerida?

Jah - lihtsalt valige väljundtekst ja kopeerige (Ctrl+C Windowsis/Linuxis, Cmd+C Macis). Tulemused on lihttekst, seega saate neid kleepida igale poole: tabelarvutustesse, dokumentidesse, e-kirjadesse, planeerimistöövahenditesse.

Miks kasutada seda käsitsi segamise asemel?

Kiirus: Digitaalne segamine võtab 0,05 sekundit. Käsitsi segamine (nimede kirjutamine paberile, kübarasse panemine, raputamine, tõmbamine) võtab 5+ minutit.

Õiglus: Inimesed on juhuslikkuses halvad. Me eelistame alateadlikult teatud mustreid. Fisher-Yates algoritm on matemaatiliselt tõestatud erapooletu.

Läbipaistvus: Tehke tulemustest ekraanipilt dokumenteerimiseks. Käsitsi meetodite puhul on alati keegi, kes kahtlustab, et te "manipuleerisite" valikut.

Kas sisendijärjekord mõjutab väljundit?

Üldse mitte. Fisher-Yates algoritm tagab ühtlase juhusliku jaotuse olenemata sellest, kuidas te üksused sisestate. Kirjutage need alfabeetiliselt, vastupidises alfabeetilises järjekorras või täiesti juhuslikult - segatud väljundil on samad statistilised omadused.

Parimad tavad juhuslike loendite segamiseks

Enne segamist

Puhasta sisend: Üks üksus real, ilma liigsedate tühjade ridadeta. Mida puhtam on sisend, seda puhtam on väljund.

Otsusta duplikaatidest: Kas soovid, et "Saara" võiks esineda kaks korda? Jäta duplikaadid alles. Soovid igat nime ainult üks kord? Eemalda duplikaadid enne segamist.

Kasuta ühtset nimetamist: Kui loetled õpilasi, ära segi "Jaan Maasikas", "J. Kask" ja "Tamm, Mari". Vali üks vorming ja hoia selle juurde.

Pärast segamist

Salvesta tulemused kohe, kui neil on tähtsus. Tee ekraanipilt, aseta dokumendile, ükskõik mis viisil—lihtsalt salvesta. Sa ei saa hiljem õiglust tõestada, kui sa ei dokumenteerinud tulemust.

Selgita oma meetodit sidusrühmadele. Ütle "Kasutasin juhuslikku segajat, mis rakendab Fisher-Yatesi algoritmi" asemel lihtsalt "Ma randomiseerisin selle". Läbipaistvus loob usaldust.

Sega uuesti, kui midagi tundub vale. Kui sa segad 50 nime ja kõik naised lõpevad loetelus all, on see statistiliselt võimalik, kuid sotsiaalselt ebamugav. Sega uuesti—juhuslik valik ei hooli.

Jõudluse näpunäited

Kaasaegsed veebilehitsejad töötavad kõige paremini: Chrome, Firefox, Safari ja Edge kõik omavad suurepärast juhusliku arvu genereerimist. Kui sa kasutad Internet Explorer 9, kaaluge uuendamist.

Suured loendid (1000+ üksust) töötavad hästi mis tahes arvutil viimase kümnendi jooksul. Kui sa segad 50 000 üksust 2010. aasta netbooki peal, võid oodata sekundi või kaks. See ongi kõik.

Valmis oma loetelu juhuslikustama?

Kas te olete klassiesitlusi määramas, turniiri korraldamas või lihtsalt püüdes otsustada, mida täna õhtul vaadata, siis juhuslik loetelu segaja võtab valiku eelarvamused ära. See on kiire, matemaatiliselt õiglane ja täiesti tasuta kasutada.

Mingit registreerimist, jälgimist ega andmete salvestamist—ainult puhas juhuslikustamine, mis põhineb samal Fisher-Yates algoritmil, mis on olnud kuldstandard alates 1964. aastast. Sisestage oma üksused ülal ja näete tulemusi millisekundites.

Ideaalne: Õpetajatele õiglaselt õpilasi valides, turniiri korraldajatele võistluspaare loomas, meeskondadele ülesandeid jagades, perekondadel otsuseid tehes või igaühele, kes vajab erapooletut juhuslikustamist ilma käsitsi meetodite vaevata.

🔗

Seotud tööriistad

Avasta rohkem tööriistu, mis võivad olla kasulikud teie töövoos