Պատահական ընտրություն ցուցակից

Տեղադրեք ցանկացած ցուցակ՝ անուններ, առաջադրանքներ կամ գաղափարներ, և թույլ տվեք գործիքին կատարել արդար ընտրություն։ Խաղարկությունն աշխատում է դիտարկիչում, և տվյալները երբեք չեն հեռանում ձեր սարքից։

Սեղմեք «Ստեղծել»՝ ընտրելու համար
Բաժանիչն ավտոմատ որոշվում է, բայց կարող եք ընտրել ստորև:
Ընդլայնված Կարգավորումներ

Անհրաժեշտ է վիճակախաղի հաղթող ընտրել, աշակերտի գրատախտակի մոտ կանչել կամ որոշել, թե ով է հացի գնալո՞ւ։ Առանց գրանցման այս առցանց գործիքն արդար և պատահական ընտրություն է կատարում ձեր տեղադրած ցանկացած ցուցակից։ Պարզապես մուտքագրեք ձեր տարբերակները «Տարրեր» դաշտում՝ յուրաքանչյուրը նոր տողում կամ ստորակետով առանձնացված, նշեք անհրաժեշտ արդյունքների թիվը «Քանակ» դաշտում և սեղմեք «Ստեղծել»։ Ցուցակը պետք է պարունակի առնվազն երկու տարր և կարող է տեղավորել մինչև 1000 գրառում, որոնցից յուրաքանչյուրը՝ մինչև 200 նիշ երկարությամբ։

Յուրաքանչյուր ընտրություն կատարվում է անմիջապես ձեր դիտարկիչում՝ Web Crypto API-ի (crypto.getRandomValues) միջոցով, որը գեներացնում է գաղտնագրորեն անվտանգ պատահական արժեքներ՝ վերցված ձեր համակարգչի կամ հեռախոսի օպերացիոն համակարգից։ Ձեր ցուցակը երբեք չի ուղարկվում սերվեր, չի գրանցվում և մենք այն երբեք չենք տեսնում։ Սա այստեղ ավելի կարևոր է, քան գեներատորների մեծամասնության դեպքում, քանի որ մարդիկ սովորաբար տեղադրում են հաճախորդների տվյալներ, դասամատյաններ կամ գործընկերների անուններ։ «Բեռնել ֆայլից» կոճակը նույնպես պահպանում է այս խոստումը. ձեր դիտարկիչը կարդում է ֆայլը և լրացնում դաշտը տեղային մակարդակում՝ առանց ինտերնետում որևէ բան վերբեռնելու։

Կարգավորումները ստեղծված են այնպիսի ցուցակների համար, որոնք մարդիկ իրականում օգտագործում են։ «Բաժանիչ» դաշտը լռելյայն դրված է «Ավտոմատ» տարբերակի վրա, որն ինքնուրույն տարբերակում է նոր տողերն ու ստորակետերը և որոշում, թե որն է օգտագործվում ձեր ցուցակում, ուստի աղյուսակից, նամակագրությունից կամ փաստաթղթից պատճենված ցուցակն աշխատում է առանց ձեր կողմից լրացուցիչ ֆորմատավորման։ Ֆիքսեք այն «Նոր տող», «Ստորակետ» կամ «Բացատ» տարբերակների վրա, երբ ձեր տվյալներում առկա են խառը ձևաչափեր։ Ընդ որում, «Բացատ»-ը միշտ գիտակցված ընտրություն է և երբեք ավտոմատ չի կիրառվում, քանի որ օրինակ լրիվ անուններն իրենք պարունակում են բացատներ, և դրանցով ավտոմատ կիսելը ավելի շատ ցուցակներ կփչացներ, քան կուղղեր։ «Քանակ» դաշտը որոշում է, թե քանի տարր պետք է ընտրվի՝ 1-ից մինչև 100։ Ուզում եք ընտրել երեք հաղթո՞ղ 200 մասնակիցներից. տեղադրեք մասնակիցներին, դրեք «Քանակ»-ը 3-ի վրա և սեղմեք «Ստեղծել»։ Երկու կարգավորում ակտիվանում են միայն այն ժամանակ, երբ քանակը 2 կամ ավելի է, և մինչ այդ մնում են գորշացած. «Առանց կրկնության» փոխանջատիչը որոշում է, թե արդյոք նույն տարրը կարող է ընտրվել երկու անգամ, իսկ «Ելքի ձևաչափ»-ը սահմանում է, թե ինչպես են առանձնացվում արդյունքները՝ «Յուրաքանչյուրը նոր տողում», «Բացատով բաժանված» կամ «Ստորակետով բաժանված»։

«Տարրեր» դաշտի ներսում գտնվող կոճակների շարքը կատարում է խմբագրման այն աշխատանքը, որն այլապես ստիպված կլինեիք անել այլ տեղ։ «Բեռնել ֆայլից» կոճակը ցուցակը քաշում է անմիջապես պարզ տեքստային կամ CSV ֆայլից։ «Խառնել» կոճակը փոխում է դաշտի գրառումների հերթականությունը, «Տեսակավորել»-ը դասավորում է դրանք այբբենական կարգով՝ բնական թվային հաջորդականությամբ, իսկ երկրորդ սեղմումը հակառակն է անում, և «Մաքրել»-ը ամբողջությամբ դատարկում է դաշտը։ «Լրացրեք նմուշի տվյալները» կոճակը տեղադրում է կարճ փորձնական ցուցակ, որպեսզի կարողանաք փորձարկել գործիքը մեկ հպումով, մինչդեռ «Ընդլայնել, որպեսզի համապատասխանի բովանդակությանը»-ն բացում է դաշտը երկար ցուցակն ամբողջությամբ ցուցադրելու համար, իսկ «Ծալել լռելյայն չափի»-ն այն վերադարձնում է սկզբնական վիճակին։ Արդյունքների ներքևում «Պատճենել բոլորը» կոճակը տեղադրում է յուրաքանչյուր ընտրություն ձեր սեղմատախտակի (clipboard) վրա, «Պահպանել ֆայլում»-ը պահպանում է դրանք ձեր սարքում, իսկ «Պատմություն»-ը պահում է ձեր վերջին 10 վիճակահանությունները դիտարկիչում, որպեսզի նախորդ արդյունքը հասանելի լինի մեկ սեղմումով։

Ինչպե՞ս է իրականում կատարվում ընտրությունը։ Երբ սեղմում եք «Ստեղծել», էջը դիտարկիչից պահանջում է պատահական արժեքներ crypto.getRandomValues ֆունկցիայի միջոցով և դրանք օգտագործում է ձեր ցուցակում դիրքեր ընտրելու համար՝ JavaScript-ի կեղծ-պատահական Math.random() ֆունկցիային ապավինելու փոխարեն։ Մաքուր 32-բիթանոց արժեքը դիրքի վերածելն այն տեղն է, որտեղ ընտրիչներն աննկատ սխալվում են. այդ արժեքը ցուցակի երկարության վրա բաժանելը և մնացորդը (մոդուլը) վերցնելը ամենաակնհայտ մոտեցումն է, բայց այն կողմնակալ է, քանի որ, քանի դեռ 2^32 թիվն առանց մնացորդի չի բաժանվում ցուցակի երկարության վրա, ցուցակի սկզբի տարրերը փոքր-ինչ ավելի հաճախ են հանդիպում, քան մյուսները։ Այս թերությունը կոչվում է մոդուլային շեղում (modulo bias), և այն չափելի է, ոչ թե պարզապես տեսական։ Այս գործիքը դրա փոխարեն դեն է նետում ցանկացած արժեք, որը գերազանցում է ցուցակի երկարության ամենամեծ ճշգրիտ բազմապատիկը, և նորից է ընտրություն կատարում։ Այս տեխնիկան հայտնի է որպես մերժման ընտրանք (rejection sampling): Սա արժենում է մի քանի լրացուցիչ ֆոնային վիճակահանություն, բայց մոտավորի փոխարեն ապահովում է ճշգրիտ երաշխիք։ Ցուցակում դիրքը ոչինչ չի փոխում. առաջին և վերջին տարրերը յուրաքանչյուր խաղարկությունում ունեն միանգամայն նույն հավանականությունը։

«Առանց կրկնության» ռեժիմը տարանջատում է վիճակահանության երկու բոլորովին տարբեր տեսակներ, և վիճակագրությունը դրանցից յուրաքանչյուրի համար անվանում ունի։ Երբ այն միացված է, գործիքը խառնում է ձեր ցուցակի կրկնօրինակը Fisher-Yates ալգորիթմով և տարրերը վերցնում վերևից՝ ճիշտ այնպես, ինչպես գլխարկից թղթեր հանելը՝ առանց դրանք ետ դնելու, այնպես որ ոչ ոք չի ընտրվում երկու անգամ, և այդ չափի յուրաքանչյուր խումբ հավասարապես հավանական է։ Սա կոչվում է առանց վերադարձի ընտրանք (sampling without replacement), և հենց դա է ձեզ անհրաժեշտ մրցանակակիրների, թիմերի և հերթականության որոշման համար։ Երբ այն անջատված է, յուրաքանչյուր ընտրություն կատարվում է ամբողջ ցուցակից անկախաբար, այնպես որ նույն տարրը կարող է հանդիպել մեկից ավելի անգամ. սա վերադարձով ընտրանքն է (sampling with replacement), ինչը պետք է, երբ բոլորը մնում են իրավասու յուրաքանչյուր փուլում, օրինակ՝ հաջորդական վիճակահանություններում կամ արագ վիճակագրական նմուշառման ժամանակ։ Այս ռեժիմներից ոչ մեկը մյուսից ավելի արդար չէ. դրանք պարզապես պատասխանում են տարբեր կարիքների։

Արդար ընտրությունը չպետք է արդար տեսք ունենա։ Եթե տասը անունից ընտրեք հինգը, դուք կանոնավոր կերպով կտեսնեք երկու ընտրություն, որոնք նախնական ցուցակում գտնվում էին կողք կողքի, կամ նույն անունը երկու անգամ անընդմեջ, երբ կրկնությունները թույլատրված են, և սրանցից յուրաքանչյուրը միանգամայն սովորական է։ Ամեն մի վիճակահանություն անկախ է. նախորդ ընտրությունները բացարձակապես ոչ մի ազդեցություն չունեն հետագա ընտրությունների վրա, և երբեք ոչ մեկի հաղթելու «հերթը» չի հասնում զուտ այն պատճառով, որ երկար ժամանակ է անցել։ Այն բնազդը, որը պնդում է հակառակը, կոչվում է խաղամոլի մոլորություն (gambler's fallacy), և դա այն նույն բնազդն է, որը մեզ ստիպում է վատ կատարել պատահական ընտրություն՝ երբ մեզ խնդրում են պատահական ընտրել, մենք խուսափում ենք առաջին ու վերջին տարրերից, փորձում ենք չկրկնել անունը և բաշխում ենք մեր ընտրությունը շատ ավելի հավասարաչափ, քան երբևէ անում է իրական պատահականությունը։ Կասկածելիորեն կոկիկ թվացող արդյունքը մարդու ձեռագիրն է. իրական պատահականությունն առաջացնում է կուտակումներ։

Ինչու՞ օգտագործել պատահական ընտրության այս գործիքը.

Պատահական ընտրություն հանդիպում է ամենուր, որտեղ որոշումը պետք է դիմանա հնարավոր հարցադրումներին։ Հայաստանում ուսուցիչները հարցնում են աշակերտներին՝ առանց խտրականության և դասարանը բաժանում են նախագծային խմբերի։ Սթրիմերները և մարքեթոլոգները մրցույթի և վիճակախաղի հաղթողներ են որոշում այնպիսի լսարանի առջև, որը պետք է հավատա արդյունքին։ Մենեջերները բաշխում են առաջադրանքները, որոնց համար ոչ ոք կամավոր չի ցանկանում դիմել, իսկ թիմերը որոշում են շնորհանդեսների հերթականությունը կամ հերթապահությունը։ Հետազոտողները վիճակագրական ընտրանք են կատարում աուդիտի համար։ Ընտանիքները վերջ են դնում վեճին, թե ինչ դիտել, իսկ քաղցած խումբն ընտրում է սրճարանը։ Այս բոլոր դեպքերի ընդհանուր գիծն այնպիսի ընտրությունն է, որը յուրաքանչյուրը կարող է հետագայում բացատրել. խաղարկությունն օգտագործում է գաղտնագրական պատահականություն, այն ամբողջությամբ տեղի է ունենում ձեր սարքում, իսկ «Պատմություն» բաժինը պահպանում է արդյունքը, եթե ինչ-որ մեկն ավելի ուշ հարցնի դրա մասին։

Այս գործիքն ունի մի քանի ազնիվ սահմանափակումներ, որոնք արժե իմանալ։ Այն չի կարող ընտրել ավելի շատ տարբերվող տարրեր, քան կան ձեր ցուցակում. երեք հաղթողի համար անհրաժեշտ է առնվազն երեք անուն։ Այն սահմանափակվում է 1000 տարրով՝ յուրաքանչյուրը 200 նիշ, և մինչև 100 ընտրություն մեկ խաղարկության ընթացքում։ «Խառնել» և «Տեսակավորել» կոճակներն աշխատում են տող առ տող, ուստի մեկ տողում տեղադրված ստորակետով բաժանված ցուցակը կվերադասավորվի միայն այն ժամանակ, երբ դառնա մեկ տարր յուրաքանչյուր տողում։ Երկուսն էլ վերադասավորում են դաշտի պարունակությունը, այլ ոչ թե բուն վիճակահանությունը, որը հավասարապես արդար է՝ անկախ ձեր մուտքագրումների հերթականությունից։ Յուրաքանչյուր տարր ի սկզբանե ունի ճիշտ նույն կշիռը, ուստի խաղարկությունում, որտեղ մի անունը պետք է ունենա կրկնակի հնարավորություն, անհրաժեշտ է այդ անունը նշել երկու անգամ։ Այս սահմանափակումների շրջանակներում երաշխիքն ամուր է. ձեր ցուցակի յուրաքանչյուր տարր ունի բացարձակապես նույն հնարավորությունը՝ ամեն մի առանձին վիճակահանության ժամանակ։

FAQ

Ինչպե՞ս ընտրել պատահական անուն ցուցակից։

Տեղադրեք անունները «Տարրեր» դաշտում՝ յուրաքանչյուրը նոր տողում, կամ առանձնացված ստորակետով կամ բացատով, «Քանակ»-ը թողեք 1 և սեղմեք «Ստեղծել»։ Մեկ անուն անմիջապես կընտրվի պատահականության սկզբունքով։ Միաժամանակ մի քանի անուն ընտրելու համար պարզապես մեծացրեք «Քանակ»-ը մինչև անհրաժեշտ թիվը։

Արդյո՞ք ընտրությունն իսկապես արդար է։

Այո։ Յուրաքանչյուր ընտրություն օգտագործում է ձեր դիտարկիչի Web Crypto API-ն (crypto.getRandomValues)՝ մերժման ընտրանքի (rejection sampling) հետ միասին, որը վերացնում է մոդուլային շեղումը (modulo bias), ինչը կառաջանար պարզունակ իրականացման դեպքում։ Յուրաքանչյուր տարր ունի բացարձակապես նույն հավանականությունը՝ անկախ ցուցակում իր դիրքից, իսկ մի քանի տարբեր տարրերի ընտրությունն օգտագործում է Fisher-Yates ալգորիթմը, որպեսզի այդ չափի յուրաքանչյուր խումբ նույնպես ունենա հավասար հավանականություն։

Իմ ցուցակը վերբեռնվու՞մ է ձեր սերվեր։

Ոչ։ Ամբողջ խաղարկությունն աշխատում է տեղային մակարդակում՝ ձեր դիտարկիչի մեջ. ցուցակը, ընտրությունները և պատմությունը երբեք դուրս չեն գալիս ձեր սարքից, ուստի միանգամայն անվտանգ է տեղադրել անուններ, էլփոստի հասցեներ կամ ցանկացած անձնական ցուցակ։ «Բեռնել ֆայլից» կոճակը նույնպես լոկալ է. ձեր դիտարկիչն ինքն է կարդում ֆայլը և ոչինչ չի վերբեռնվում։

Կարո՞ղ եմ տեղադրել ստորակետով կամ բացատով առանձնացված ցուցակ՝ յուրաքանչյուր տողում մեկ տարրի փոխարեն։

Այո։ «Բաժանիչ» դաշտը դրված է «Ավտոմատ» տարբերակի վրա, որն ինքնուրույն տարբերակում է նոր տողերն ու ստորակետերը, ուստի աղյուսակից, նամակագրությունից կամ փաստաթղթից պատճենված ցուցակն աշխատում է այնպես, ինչպես կա։ Բացատներով բաժանված ցուցակը պահանջում է մեկ լրացուցիչ քայլ՝ դրեք «Բաժանիչ»-ը «Բացատ»-ի վրա, քանի որ լրիվ անունների նման տարրերն իրենք բացատներ են պարունակում և երբեք ավտոմատ չեն կիսվում դրանցով։ Եթե ձեր տվյալները խառը ձևաչափ ունեն, ամրագրեք «Բաժանիչ»-ը «Նոր տող» կամ «Ստորակետ» արժեքի վրա։

Ի՞նչ է անում «Առանց կրկնության» փոխանջատիչը։

Երբ «Առանց կրկնության» ռեժիմը միացված է, ընտրված յուրաքանչյուր տարր տարբեր է լինելու. ճիշտ այնպես, ինչպես գլխարկից թղթեր հանելը՝ առանց դրանք ետ դնելու, ինչը հենց այն է, ինչ ձեզ անհրաժեշտ է հաղթողներին կամ թիմերին որոշելիս։ Երբ այն անջատված է, միևնույն տարրը կարող է ընտրվել մեկից ավելի անգամ, ինչը վիճակագիրներն անվանում են վերադարձով ընտրանք (sampling with replacement)։

Ինչու՞ են «Առանց կրկնության» և «Ելքի ձևաչափ» կարգավորումները գորշացած։

Քանի որ երկուսն էլ կիրառելի են միայն այն ժամանակ, երբ դուք ընտրում եք մեկից ավելի տարր, ինչպես ասվում է դրանց կողքի հուշման մեջ. «Կիրառվում է միայն, երբ Քանակը մեծ է 1-ից»։ Բարձրացրեք «Քանակ»-ը 2-ի կամ ավելի, և երկուսն էլ կդառնան հասանելի. երբ քանակը 1 է, կրկնելու կամ տարանջատելու ոչինչ չկա։

Ի՞նչ է անում «Ելքի ձևաչափ» տարբերակը։

Այն սահմանում է, թե ինչպես են ցուցադրվում և պատճենվում մի քանի ընտրությունները. «Յուրաքանչյուրը նոր տողում», «Բացատով բաժանված»՝ նամակագրության մեջ արագ ուղարկելու համար, կամ «Ստորակետով բաժանված»՝ աղյուսակի կամ սկրիպտի մեջ տեղադրելու համար։ Այն հասանելի է դառնում, երբ «Քանակ»-ը 2 կամ ավելի է։

Ի՞նչ են անում «Խառնել» և «Տեսակավորել» կոճակները։

«Խառնել» կոճակը փոխում է գրառումների դասավորությունը «Տարրեր» դաշտում, իսկ «Տեսակավորել»-ը դասավորում է դրանք այբբենական կարգով, ընդ որում թվերը՝ բնական հերթականությամբ, իսկ կրկնակի սեղմելիս շրջում է կարգը։ Երկուսն էլ փոխում են միայն ձեր ցուցակի գրվածքի ձևը, ոչ թե այն, թե ինչպես է աշխատում վիճակահանությունը. գործիքը հավասարապես արդար է՝ անկախ նրանից, թե ինչ հերթականությամբ են տարրերը դասավորված։

Քանի՞ տարր կարող է պարունակել ցուցակը, և քանի՞սը կարող եմ ընտրել միանգամից։

Ցուցակը տեղավորում է 2-ից մինչև 1000 գրառում, յուրաքանչյուրը՝ մինչև 200 նիշ, իսկ մեկ վիճակահանությունը վերադարձնում է մինչև 100 ընտրություն։ Դատարկ տողերը և շրջապատող բացատներն անտեսվում են, ուստի աղյուսակից կամ փաստաթղթից պատճենված ցուցակն աշխատում է այնպես, ինչպես կա։

Արդյո՞ք այն հարմար է մրցույթների կամ վիճակախաղերի հաղթողներին ընտրելու համար։

Այո, և դա ամենատարածված կիրառություններից մեկն է։ Տեղադրեք մասնակիցներին, դրեք «Քանակ»-ը մրցանակների թվի վրա, միացրած պահեք «Առանց կրկնության» ռեժիմը, որպեսզի ոչ ոք չհաղթի երկու անգամ, և սեղմեք «Ստեղծել»։ Քանի որ խաղարկությունն օգտագործում է գաղտնագրորեն անվտանգ պատահականություն և ամբողջությամբ աշխատում է ձեր սարքում, գործընթացը հեշտ է բացատրել, իսկ «Պատմություն» բաժինը կպահի արդյունքը, եթե մասնակիցներից որևէ մեկը հետագայում հարցեր ունենա:

Կարո՞ղ եմ սա օգտագործել մարդկանց թիմերի բաժանելու համար։

Այո։ Դրեք «Քանակ»-ը առաջին թիմի անդամների թվի չափով և սեղմեք «Ստեղծել». ընտրված անուններն առաջին թիմն են։ Ջնջեք նրանց ցուցակից և կրկնեք գործընթացը հաջորդ թիմի համար։ Միացրած պահեք «Առանց կրկնության» ռեժիմը, որպեսզի ոչ ոք միաժամանակ երկու թիմում չհայտնվի։

Ինչու՞ նույն անունը հանդիպեց երկու անգամ անընդմեջ։

Որովհետև անկախ խաղարկությունները կրկնվում են, և հենց այդպես էլ իրականում դրսևորվում է պատահականությունը։ Յուրաքանչյուր վիճակահանություն անտեսում է իրենից առաջ եղած բոլոր խաղարկությունները, ուստի տասը անուններով ցուցակում նույն անվան երկու անգամ անընդմեջ հանդիպելն ունի 1-ը 10-ի հավանականություն ամեն անգամ. դա սովորական երևույթ է և ոչ թե գործիքի խափանում։ Միացրեք «Առանց կրկնության» ռեժիմը, եթե ձեզ պետք է, որպեսզի մեկ խաղարկության ընթացքում յուրաքանչյուր ընտրություն տարբեր լինի։

Արդյո՞ք գործիքը հիշում է իմ ընտրությունները, և արդյո՞ք այն անվճար է։

«Պատմություն» ներդիրը պահում է ձեր վերջին 10 վիճակահանությունները ձեր իսկ դիտարկիչում, ուստի կարող եք վերականգնել, պատճենել կամ ջնջել նախորդ արդյունքը, և մաքրել ամբողջը, երբ ցանկանաք։ Գործիքը լիովին անվճար է և չի պահանջում գրանցում, իսկ քանի որ ոչինչ չի փոխանցվում, մենք չէինք կարողանա տեսնել կամ պահպանել ձեր ընտրությունները նույնիսկ եթե ցանկանայինք։