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.
Enter items to shuffle, one per line. Empty lines will be automatically removed.
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.
Liides on lihtne:
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.
Klõpsake "Sega loend": Segamine toimub koheselt. Te märkate, et laadimisanimatsiooni pole, sest algoritm lõpetab millisekundites, isegi suurte loendite puhul.
Vaadake tulemusi: Teie segatud loend ilmub alla, nummerdatult ja kasutamisvalmis.
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).
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.
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.
Algoritm käib läbi teie loendi lõpust alguseni:
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.
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.
Õ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 Alice Johnson
2 Bob Smith
3 Carol Williams
4 David Brown
5 Emma Davis
6 Vajutage "Juhuslikusta loend"
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.
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.
Olete 15 minutit oma restoranide loendit vaadanud. Kõik muutuvad näljaseks ja ärritunuks. Tuttav olukord?
Miks see psühholoogiliselt töötab: Juhuslikku tulemust vastu võtta on lihtsam kui kaitsta isiklikku eelistust. Te ei "anna alla" - te austute juhuslikust.
Õpetajad tuginevad segajatele õiglase valiku tagamiseks ilma tajutava eelistamiseta:
Tegelik lahendatud probleem: Kui alati küsitakse eesreast, lakkavad tagumise rea õpilased ette valmistamast. Juhuslik valik hoiab kõiki kaasatud.
Turniiride korraldajad ja mängujuhid kasutavad segamist:
Ü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.
Lõpeta 20 minuti kulutamine Netflix'ist vaatamise üle otsustamisel. Sega oma valikud ja vali kolm parimat. Sobib:
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
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.
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:
Kirjutage numbrid 1 kuni n paberile
Valige juhuslik number allesjäänud hulgast
Tõmmake see maha ja kirjutage tulemustesse
Korrake kuni valmis
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.
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:
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.
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]
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.
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.
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.
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.
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.
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.
Jah, kõiki. Segaja aktsepteerib mis tahes teksti:
Iga rida muutub üheks üksuseks, olenemata selle sisust.
Enamik rakendusi filtreerib tühja read automaatselt, et vältida tühje kirjeid tulemustes. Kui vajate kohatäitjaid, kasutage midagi nähtavat nagu:
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.
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.
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.
Ü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.
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.
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.
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.
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.
Avasta rohkem tööriistu, mis võivad olla kasulikud teie töövoos