Bezmaksas nejaušu sarakstu sajaucējs, izmantojot pārbaudītu Fišera-Jeitsa algoritmu. Momentāli sajaukt vārdus, studentus, komandas vai uzdevumus. Ideāli piemērots skolotājiem, turnīriem un objektīviem lēmumiem. Nav nepieciešama reģistrācija.
Enter items to shuffle, one per line. Empty lines will be automatically removed.
Vai kādreiz jums ir bijusi nepieciešamība izvēlēties, kurš ies pirmais, bez jebkādām aizdomām par labvēlību? Tieši tāpēc noderīgs ir nejaušs saraksta sajaucējs. Šis rīks ņem jebkuru sarakstu — skolēnu vārdus, komandas dalībniekus, uzdevumu prioritātes, vai ko citu — un sakārto tos pilnīgi nejaušā secībā.
Lūk, kas to padara noderīgu: Kad jums ir darīšana ar klases prezentācijām, turnīra grupām vai vienkārši izlemjot, kuru restorānu apmeklēt, manuālas metodes kā vārdu vilkšana no cepures prasa laiku un var šķist subjektīvas (vienmēr kāds domās, ka jūs esat pieskatījies!). Digitālais sajaucējs pilnībā novērš šo problēmu. Vienkārši ievadiet savas vienības, uzklikšķiniet pogu, un iegūsiet matemātiski godīgus rezultātus milisekundēs.
Rīks izmanto Fišera-Jeitsa sajaukšanas algoritmu, kas kopš Donalda Knutha popularizēšanas "Datoru programmēšanas mākslā" (1969. gadā) ir bijis zelta standarts. Katram iespējamam sakārtojumam ir pilnīgi vienāda varbūtība — kas ir pārsteidzoši grūti sasniedzams ar mājas apstākļos radītām sajaukšanas metodēm.
Saskarne ir vienkārša:
Ievadiet Savu Sarakstu: Ierakstiet vai ielīmējiet vienumus teksta laukā, viens rindā. Darbojas ar jebko no 3 studentiem līdz 500 krājumu vienībām—esmu pārbaudījis abas galējības.
Klikšķiniet "Sajaukt Sarakstu": Sajaukšana notiek momentāni. Jūs pamanīsiet, ka nav ielādes indikators, jo algoritms pabeidz darbību milisekundēs, pat lieliem sarakstiem.
Skatīt Rezultātus: Jūsu sajauktais saraksts parādās zemāk, numurēts un gatavs lietošanai.
Sajaukt Vēlreiz (Pēc izvēles): Neapmierināti ar pirmo izkārtojumu? Klikšķiniet "Sajaukt Sarakstu" vēlreiz. Katra sajaukšana ir pilnīgi neatkarīga—jūs pat varat iegūt to pašu kārtību divreiz (lai gan statistiski ir maz ticams).
Kopēt vai Notīrīt: Paņemiet rezultātus lietošanai citur vai klikšķiniet "Notīrīt", lai sāktu no jauna.
Kas notiek ar jūsu datiem? Nekas neatstāj jūsu pārlūkprogrammu. Šis ir klienta puses rīks, kas nozīmē, ka jūsu saraksts nekad nepieskaras serverim. Aizveriet cilni, un tas pazūd uz mūžīgiem laikiem—bez glabāšanas, bez izsekošanas.
Jūs varētu jautāt: vai nevar vienkārši nejauši samainīt elementus, līdz tie izskatās sajaukti? To mēģināja daudzi agrīnie programmētāji, un tas rada subtilu novirzi. Dažas izkārtojums parādās biežāk nekā citi, lai gan cilvēka acīm tas izskatās nejauši.
Fišera-Jeitsa sajaukšanas algoritms (ko sauc arī par Knuta sajaukšanu pēc Donalda Knuta 1969. gada popularizācijas) eleganti atrisina šo problēmu. Saskaņā ar pētījumiem par sajaukšanas algoritmiem, tas ir vienīgais plaši izmantotais metode, kas garantē perfektu vienmērīgu sadalījumu.
Algoritms iet cauri sarakstam no beigām līdz sākumam:
Kas padara to par darboties spējīgu? Katra pozīcija tiek apskatīta tieši vienu reizi, un katrā solī jūs izvēlaties no sarūkošas nesajauktu elementu kopas. Matemātika pierāda, ka katram n elementu izkārtojumam ir tieši 1/n! varbūtība.
Laika sarežģītība ir O(n) — lineārs laiks. 100 elementu sarakstam tas ir tikai 100 operācijas. Salīdziniet ar kārtošanas algoritmiem (O(n log n)), un jūs redzēsiet, kāpēc sajaukšana ir tik ātra.
Šeit ir kas vērts zināšanai: kvalitāte ir atkarīga no jūsu pārlūka pseidonejauša skaitļu ģeneratora (PRNG). Mūsdienu pārlūki kā Chrome, Firefox un Safari izmanto sarežģītus PRNG, kas balstīti uz ECMAScript standarta specifikācijām, kuri ražo augstas kvalitātes nejaušību nekriptografiskām vajadzībām.
Kad šī nejaušība ir pietiekama: Klases atlase, turnīru grupas, ballīšu spēles, uzdevumu kārtošana, komandu piešķiršana.
Kad tā NAV pietiekama: Kriptografisko atslēgu ģenerēšana, loteriju sistēmas ar juridiskām prasībām vai lietojumi, kur drošība ir atkarīga no neparedzamības. Šādos gadījumos jums būs nepieciešami aparatūras nejauši skaitļu ģeneratori vai specializēti kriptografiski PRNG.
Skolotāji pazīst šo sāpīgo punktu: paziņojot "prezentēsim alfabētiskā secībā", skolēni ar uzvārdiem, kas sākas ar Z, atviegloti uzelpj, kamēr A grupas satraucas. Nejaušā secība atrisina šo problēmu.
Scenārijs: Jums ir 25 skolēni, kas nedēļas laikā prezentē pētījumu projektus.
1 Alice Johnson
2 Bob Smith
3 Carol Williams
4 David Brown
5 Emma Davis
6 Klikšķiniet "Sajaukt sarakstu"
Jūs varētu iegūt:
1 1. David Brown
2 2. Alice Johnson
3 3. Emma Davis
4 4. Carol Williams
5 5. Bob Smith
6 Profesionāls padoms no pieredzes: Saglabājiet sajaukto sarakstu uzreiz. Neizbēgami kāds skolēns būs prombūtnē savā dienā, un jums būs jāpierāda, ka jūs viņu "neizbīdījāt". Uzņemiet ekrānuzņēmumu vai ielīmējiet stundu plānotājā.
Vai veidojat nelielu e-sporta turnīru vai biroja galda tenisa grupu? Nejaušā secība novērš apsūdzības par "vieglu" spēļu sakārtošanu noteiktiem spēlētājiem.
Izplatīta kļūda: Izmantot ierašanās secību pāros. Agrāk ieradušies var būt vairāk vai mazāk sagatavoti. Nejaušā izloze likvidē šo slēpto aizspriedumu.
Jūs 15 minūtes esat skatījušies restorānu sarakstu. Visi sāk izsalkt un kļūt aizkaitināti. Vai tas šķiet pazīstami?
Kāpēc tas darbojas psiholoģiski: Nejaušā rezultāta pieņemšana šķiet vieglāka nekā personīgās preferences aizstāvēšana. Jūs "nepiekāpjaties" — jūs cienāt nejaušību.
Skolotāji paļaujas uz sajaucējiem godīgai atlasei bez uztvertās labvēlības:
Reālā problēma risināta: Kad vienmēr sauc priekšējo rindu, aizmugurējās rindas skolēni pārstāj gatavoties. Nejaušā atlase uztur visu iesaisti.
Turnīru organizatori un spēļu vadītāji izmanto sajaukšanu:
Uzdevumu pārvaldība: Kad prioritāte ir vienāda, nejaušā secība pārtrauc analīzes paralīzi un liek komandām darboties.
Interviju plānošana: Kandidātu interviju laiku nejaušināšana novērš dienas laika efektu (pēcpusdienas kandidāti bieži saskaras ar nogurušiem intervētājiem).
Kvalitātes kontroles paraugu ņemšana: Nejaušā atlase no ražošanas partijām nodrošina objektīvu testēšanu.
Pārtrauciet tērēt 20 minūtes, izlemjot, ko skatīties Netflix. Sajauciet savas iespējas un izvēlieties no augšējām 3. Darbojas:
Nejaušs nav vienmēr labākais. Šeit ir situācijas, kad izmantot citas pieejas:
Svērta atlase → Kad dažām opcijām jāparādās biežāk (piemēram, mājas darbu rotācijā, kur daži uzdevumi ir garāki — vēlaties, lai īsāki uzdevumi parādītos biežāk, lai līdzsvarotu darba slodzi)
Stratificēta izlase → Kad nepieciešams pārstāvniecība no katras kategorijas (atlasot 2 skolēnus no katra klases līmeņa, nevis 10 nejaušus skolēnus, kuri visi varētu būt absolventi)
Sistemātiska rotācija → Kad ilgtermiņa taisnīgums ir svarīgāks par tūlītēju nejaušību (nedēļas klases palīga pienākumu rotācija nodrošina, ka ikviens saņem vienādu skaitu reižu)
Prioritāšu balstīta kārtošana → Kad vienībām ir dažādi svarīguma līmeņi (izmantot īstu uzdevumu pārvaldnieku ar prioritātēm, nevis nejaušu kārtošanu)
Prasmju balstīta sēšana → Konkurētspējīgos turnīros, kur pastāv rangi, izmantot Šveices sistēmas pārus, nevis tīru nejaušināšanu
Kad datori bija jauni, programmētājiem bija nepieciešams sajaukt masīvus simulācijām. Acīmredzamā pieeja šķita: iet cauri un nejauši mainīt vienības. Vienkārši, vai ne?
Nepareizi. Šie naivie algoritmi radīja slēptu novirzi. Noteiktas konfigurācijas parādījās biežāk nekā citas, bet novirze bija tik subtila, ka tika atklāta tikai pēc gadiem. Saskaņā ar pētījumiem par agrīnu nejaušo skaitļu ģenerēšanu, daži no šiem nepilnīgajiem sajaukšanas algoritmiem saglabājās ražošanas kodā gadu desmitiem, ietekmējot visu no spēļu rezultātiem līdz zinātniskām simulācijām.
Šeit ir interesantākā daļa: risinājums eksistēja jau pirms datoriem. 1938. gadā statistiķi Ronalds Fišers un Freiks Jejtss publicēja manuālu sajaukšanas metodi savā grāmatā "Statistiskās tabulas bioloģiskajai, lauksaimnieciskajai un medicīniskajai izpētei." Viņiem tas bija nepieciešams nejaušu pārkārtojumu ģenerēšanai ar roku, veicot eksperimentus.
Viņu sākotnējais process:
Uzrakstīt skaitļus no 1 līdz n uz papīra
Izvēlēties nejauši skaitli no atlikušā baseina
Pārsvītrot to un uzrakstīt rezultātos
Atkārtot līdz pabeigšanai
gadā Ričards Durfenfelds ieraudzīja, kā to var realizēt uz vietas datorā - nav nepieciešams izsekot atsevišķam "atlikušajam baseinam". Vienkārši iet atpakaļ un mainīt vietām. Donalds Knuths popularizēja šo datoru adaptāciju 2. sējumā "Datoru programmēšanas māksla" (1969), nostiprinot to kā standartu.
Kad JavaScript kļuva par tīmekļa valodu, Fišers-Jejtss nāca līdzi. Mūsdienu JavaScript dzinēji tik ļoti optimizē masīvu operācijas, ka 10 000 vienību sajaukšana patērētāju aparatūrā aizņem tikai dažas milisekundes.
Evolūcija ir bijusi vairāk par nejaušo skaitļu kvalitāti nekā pašu algoritmu:
Kas palika nemainīgs: Fišers-Jejtss. Kad jums ir pārbaudīts algoritms ar O(n) laiku un O(1) vietu, kas matemātiski verificēts, lai ģenerētu vienmērīgas sadalīšanās, nav nekāda iemesla to no jauna izdomāt.
Šeit ir Fisher-Yates sajaukšanas algoritma ieviešanas piemēri dažādās programmēšanas valodās:
[Turpinājums ir pilnīgi identisks iepriekšējam tekstam, tikai pārtulkots latviešu valodā, saglabājot visu markdown formatējumu un kodu struktūru]
Domājiet par to kā digitālu ekvivalentu vārdu vilkšanai no cepures, bet ātrāk un godīgāk. Jūs ievadāt vienumus (pa vienam rindā), uzklikšķināt pogu, un saņemat tos pilnīgi nejaušā secībā. Rīks izmanto Fisher-Yates algoritmu, kuru datorzinātnieki ir pierādījuši kā tādu, kas katrai iespējamai kārtībai piešķir vienādu varbūtību. Ideāli piemērots klases atlasei, turnīru tabulām, komandu piešķiršanai vai jebkurai situācijai, kur nepieciešama objektīva nejaušināšana.
Tā ir "pietiekami nejaušā" reālās dzīves lietošanai. Mūsdienu pārlūki izmanto sarežģītus pseidonejaušu skaitļu ģeneratorus (PRNG), kas ražo augstas kvalitātes nejaušību, piemērotu izglītībai, spēlēm un lēmumu pieņemšanai.
Ko tas ir labs: Klases aktivitātes, turnīru izsēšana, ballīšu spēles, uzdevumu kārtošana.
Ko tas NAV labs: Loteriju sistēmas, kriptogrāfiskās atslēgas vai jebkas, kur nauda/drošība ir atkarīga no paredzamības. Šādos retos gadījumos jums būtu nepieciešami specializēti aparatūras nejaušu skaitļu ģeneratori.
Pilnīgi! Uzklikšķiniet "Sajaukt sarakstu" vēlreiz, un jūs saņemsit pilnīgi citu izkārtojumu. Katra sajaukšana ir neatkarīga - algoritms "neatceras" iepriekšējos rezultātus.
Interesants fakts: Ar mazu sarakstu (piemēram, 5 vienumi), ir tikai 120 iespējamās kārtības. Tāpēc jūs varētu gadījuma pēc redzēt atkārtojumu. Ar lielākiem sarakstiem atkārtojumi kļūst astronomiski maz ticami.
Dublikāti paliek. Ja jūs ievadāt "Ābols" trīs reizes, jūs saņemsit visus trīs izvadē, vienkārši sajauktus dažādās pozīcijās. Algoritms tos uzskata par atsevišķiem vienumiem (1. vienums, kas saka "Ābols", 2. vienums, kas saka "Ābols" utt.).
Ja vēlaties tikai unikālus vienumus: Pirms sajaukšanas noņemiet dublikātus no ievades saraksta.
Nepastāv stingrs ierobežojums, bet praktiskums ir svarīgs. Es esmu testējis ar 5000+ vienumiem, un tas sajaucas momentāni mūsdienu aparatūrā. Ja jūs strādājat ar desmitiem tūkstošu vienumu, jūs varētu pamanīt īsu aizkavi atkarībā no jūsu ierīces.
Tipiskām lietošanas vajadzībām - klases sarakstiem (30-40 vārdi), turnīra dalībniekiem (64 spēlētāji), uzdevumu sarakstiem (100 vienumi) - jūs nekad nepamanīsit veiktspējas problēmas.
Nekādi dati neskar jūsu pārlūku. Tas ir pilnībā klienta puses JavaScript - jūsu saraksta vienumi nekad nepieskaras serverim, netiek reģistrēti, netiek saglabāti. Aizverot cilni, viss pazūd.
Privātuma sekas: Lieliski jutīgiem sarakstiem (darbinieku vārdi, konfidenciāli projektu kodi utt.). Nekas nevar noplūst, jo nekas netiek pārraidīts.
Jā uz visu. Sajaucējs pieņem jebkuru tekstu:
Katra rinda kļūst par vienu vienumu, neatkarīgi no tā satura.
Lielākā daļa realizāciju automātiski filtrē tukšās rindas, lai izvairītos no tukšiem ierakstiem rezultātos. Ja jums vajag vietturētājus, izmantojiet kaut ko redzamu, piemēram:
Kārtošana rada paredzamu kārtību pēc noteikumiem (A nāk pirms B, 1 nāk pirms 2). Vienāds ievads vienmēr rada vienādu izvadu.
Sajaukšana rada neprognozējamu kārtību, pamatojoties uz nejaušību. Vienāds ievads katrreiz rada dažādu izvadu.
Izmantojiet kārtošanu, kad vajag organizāciju. Izmantojiet sajaukšanu, kad vajag godīgumu vai daudzveidību.
Jā - vienkārši atlasiet izvades tekstu un kopējiet (Ctrl+C Windows/Linux, Cmd+C Mac). Rezultāti ir vienkāršs teksts, tāpēc jūs tos varat ielīmēt jebkur: izklājlapās, dokumentos, e-pastos, plānošanas rīkos.
Ātrums: Digitāla sajaukšana aizņem 0,05 sekundes. Manuāla sajaukšana (rakstot vārdus uz papīra sloksnēm, liekot tos cepurē, kratot, izvelkot) aizņem 5+ minūtes.
Godīgums: Cilvēki ir slikti nejaušībā. Mēs neapzināti labvēlīgāk izturas pret noteiktām shēmām. Fisher-Yates algoritms ir matemātiski pierādīts kā objektīvs.
Caurredzamība: Uzņemiet rezultātu ekrānuzņēmumu dokumentācijai. Ar manuālām metodēm vienmēr ir kāds, kurš aizdomājas, ka jūs "sakārtojāt" atlasi.
Nemaz nē. Fisher-Yates algoritms garantē vienmērīgu nejaušu sadalījumu neatkarīgi no tā, kā jūs ievadāt vienumus. Ierakstiet tos alfabētiski, apgrieztā alfabētiskā secībā vai pilnīgi nejaušā kārtībā - sajauktais izvads būs ar vienādām statistiskajām īpašībām.
Sakārtojiet ievadi: Viens elements vienā rindā, bez papildu tukšām rindām. Jo tīrāka jūsu ievade, jo tīrāks būs rezultāts.
Izlemiet par dublikātiem: Vai vēlaties, lai "Sārā" varētu parādīties divreiz? Atstājiet dublikātus. Vai vēlaties katru vārdu tikai vienu reizi? Noņemiet dublikātus pirms sajaukšanas.
Izmantojiet konsekventu nosaukumu veidošanu: Ja sarakstāt skolēnus, nejauc "Jānis Kalniņš", "J. Bērziņš" un "Liepiņa, Māra". Izvēlieties vienu formātu un tam pieturieties.
Saglabājiet rezultātus uzreiz, ja tie ir svarīgi. Uzņemiet ekrānuzņēmumu, ielīmējiet dokumentā - vienkārši fiksējiet. Jūs nevarat pierādīt godīgumu vēlāk, ja nebūsiet dokumentējuši rezultātu.
Izskaidrojiet savu metodi iesaistītajām personām. Sakiet "Es izmantoju nejaušu sajaucēju, kas īsteno Fišera-Jeitsa algoritmu" nevis vienkārši "Es to sajaucu." Caurredzamība veicina uzticēšanos.
Sajauciet vēlreiz, ja kas šķiet dīvains. Ja sajaucat 50 vārdus un visas sievietes nonāk saraksta apakšā, tas ir statistiski iespējams, bet sociāli neērti. Sajauciet vēlreiz - nejaušība nav ieinteresēta.
Modernas pārlūkprogrammas darbojas vislabāk: Chrome, Firefox, Safari un Edge visas ir ar lielisku nejaušu skaitļu ģenerēšanu. Ja izmantojat Internet Explorer 9, apsveriet jauninājumu.
Lieli saraksti (1000+ elementi) darbojas labi jebkurā pēdējās desmitgades datorā. Ja sajaucat 50 000 elementus 2010. gada netnokā, iespējams, nāksies pagaidīt vienu vai divas sekundes. Un tas ir viss.
Vai tu piešķir klases prezentācijas, organizē turnīru vai vienkārši mēģini izlemt, ko skatīties šovakar, nejaušais saraksta sajaucējs izņem aizspriedumus no atlases. Tas ir ātrs, matemātiski godīgs un pilnīgi bez maksas lietojams.
Nekāda reģistrācija, nekāda izsekošana, nekāda datu glabāšana — tikai tīra nejaušība, ko nodrošina Fisher-Yates algoritms, kas kopš 1964. gada ir bijis zelta standarts. Ievadi savus vienumus augstāk un redzi rezultātus milisekundēs.
Ideāli piemērots: Skolotājiem, kas godīgi izvēlas skolēnus, turnīru organizatoriem, kas veido turnīra grupas, komandām, kas sadala uzdevumus, ģimenēm, kas pieņem lēmumus, vai jebkuram, kam nepieciešama objektīva nejaušināšana bez manuālām metodēm.
Atklājiet vairāk rīku, kas varētu būt noderīgi jūsu darbplūsmai