შემთხვევითი არჩევა სიიდან

ჩასვით ნებისმიერი სია — სახელები, დავალებები ან იდეები — და მიეცით ინსტრუმენტს სამართლიანი არჩევანის გაკეთების საშუალება. გათამაშება მუშაობს თქვენს ბრაუზერში და მონაცემები არასოდეს ტოვებს მოწყობილობას.

დააჭირეთ «გენერაციას» არჩევისთვის
გამყოფი ამოიცნობა ავტომატურად, მაგრამ შეგიძლიათ აირჩიოთ ქვემოთ.
დამატებითი პარამეტრები

გსურთ გათამაშების გამარჯვებულის გამოვლენა, მოსწავლის გამოძახება, თუ იმის გადაწყვეტა, ვინ წავა პურზე? ეს უფასო ონლაინ ინსტრუმენტი სამართლიანად და შემთხვევითად ირჩევს ელემენტს თქვენ მიერ ჩასმული ნებისმიერი სიიდან. უბრალოდ შეიყვანეთ თქვენი ვარიანტები ველში „ელემენტები“ — თითოეული ახალ ხაზზე ან მძიმეებით გამოყოფილი — მიუთითეთ სასურველი შედეგების რაოდენობა ველში „რაოდენობა“ და დააჭირეთ ღილაკს „გენერაცია“. სია უნდა შეიცავდეს მინიმუმ ორ ელემენტს და შეუძლია დაიტიოს 1000-მდე ჩანაწერი, თითოეული მაქსიმუმ 200 სიმბოლოს სიგრძით.

თითოეული არჩევა ხორციელდება უშუალოდ თქვენს ბრაუზერში Web Crypto API-ის (crypto.getRandomValues) გამოყენებით, რომელიც უზრუნველყოფს კრიპტოგრაფიულად უსაფრთხო შემთხვევით მნიშვნელობებს თქვენი სისტემიდან. თქვენი სია არასოდეს იგზავნება სერვერზე, არ ინახება არსად და ჩვენ მას ვერასოდეს ვხედავთ — რაც აქ უფრო მნიშვნელოვანია, ვიდრე სხვა გენერატორების უმეტესობის შემთხვევაში, რადგან მომხმარებლებს ხშირად შეჰყავთ კლიენტების სია, კლასის ჟურნალი ან კოლეგების სახელები. ღილაკი „ჩატვირთვა ფაილიდან“ ასევე ინარჩუნებს ამ დაპირებას: თქვენი ბრაუზერი თავად კითხულობს ფაილს და ავსებს ველს ლოკალურად, ისე რომ არაფერი იტვირთება ინტერნეტში.

პარამეტრები შექმნილია იმ სიებისთვის, რომლებსაც მომხმარებლები რეალურად იყენებენ. ველი „გამყოფი“ ნაგულისხმევად დაყენებულია ვარიანტზე „ავტომატური“, რომელიც დამოუკიდებლად განასხვავებს ახალ ხაზებსა და მძიმეებს, ამიტომ ცხრილიდან, ჩატიდან ან დოკუმენტიდან დაკოპირებული სია მუშაობს ყოველგვარი დამატებითი ფორმატირების გარეშე. ჩაკეტეთ ის ვარიანტზე „ახალი ხაზი“, „მძიმე“ ან „ჰარი“, როდესაც თქვენს მონაცემებში შერეული ფორმატებია — გაითვალისწინეთ, რომ ვარიანტი „ჰარი“ ყოველთვის შეგნებული არჩევანია და არასოდეს მოქმედებს ავტომატურად, რადგან ისეთი ელემენტები, როგორიცაა სრული სახელები, თავად შეიცავს ჰარებს, და მათი ავტომატური დაყოფა უფრო მეტ სიას გააფუჭებდა, ვიდრე შეაკეთებდა. ველი „რაოდენობა“ განსაზღვრავს, თუ რამდენი ელემენტი უნდა შეირჩეს, 1-დან 100-მდე. გსურთ 200 მონაწილიდან სამი გამარჯვებულის გამოვლენა? ჩასვით მონაწილეები, დააყენეთ „რაოდენობა“ 3-ზე და დააჭირეთ ღილაკს „გენერაცია“. ორი პარამეტრი ხელმისაწვდომი ხდება მხოლოდ მაშინ, როცა რაოდენობა 2 ან მეტია, მანამდე კი არააქტიური რჩება: გადამრთველი „გამეორების გარეშე“, რომელიც წყვეტს, შეიძლება თუ არა ერთი და იგივე ელემენტის ორჯერ ამოღება, და „გამოტანის ფორმატი“, რომელიც განსაზღვრავს შედეგების გამოყოფის წესს — „თითოეული ახალ ხაზზე“, „ჰარით გამოყოფილი“ ან „მძიმით გამოყოფილი“.

ღილაკების რიგი ველში „ელემენტები“ ასრულებს რედაქტირებას, რისი გაკეთებაც სხვა შემთხვევაში სხვაგან მოგიწევდათ. ღილაკი „ჩატვირთვა ფაილიდან“ პირდაპირ კითხულობს სიას მარტივი ტექსტური ან CSV ფაილიდან. ღილაკი „ჩარევა“ ურევს ველში არსებული ჩანაწერების მიმდევრობას, „დალაგება“ აწყობს მათ ანბანური და ბუნებრივი რიცხვითი თანმიმდევრობით (ხოლო მეორე დაჭერა აბრუნებს მათ), ხოლო „გასუფთავება“ მთლიანად აცარიელებს ველს. ღილაკი „შეავსეთ ნიმუშის მონაცემები“ ამატებს მოკლე სატესტო სიას, რათა ერთი კლიკით სცადოთ ინსტრუმენტი, ხოლო „გაფართოება, რათა მოერგოს შინაარსს“ შლის ველს გრძელი სიის სრულად საჩვენებლად და „ჩაკეცვა ნაგულისხმევ ზომამდე“ აბრუნებს მას საწყის მდგომარეობაში. შედეგის ქვემოთ, „ყველას კოპირება“ აკოპირებს თითოეულ არჩევანს თქვენს ბუფერში, „ფაილში შენახვა“ ინახავს მათ თქვენს მოწყობილობაში, ხოლო „ისტორია“ ინახავს თქვენს ბოლო 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-მდე არჩევანს. ცარიელი ხაზები და ზედმეტი ჰარები იგნორირებულია, ამიტომ Excel-იდან ან დოკუმენტიდან დაკოპირებული სია მუშაობს ყოველგვარი შესწორების გარეშე.

არის თუ არა ინსტრუმენტი შესაფერისი გათამაშების გამარჯვებულების ასარჩევად?

დიახ, და ეს მისი ერთ-ერთი ყველაზე გავრცელებული გამოყენებაა. შეიყვანეთ მონაწილეები, დააყენეთ „რაოდენობა“ პრიზების რაოდენობაზე, დატოვეთ ჩართული რეჟიმი „გამეორების გარეშე“, რათა არავინ გაიმარჯვოს ორჯერ და დააჭირეთ ღილაკს „გენერაცია“. რადგან გათამაშება იყენებს კრიპტოგრაფიულად უსაფრთხო შემთხვევითობას და სრულად მუშაობს თქვენს მოწყობილობაში, პროცესი მარტივი ასახსნელია, ხოლო „ისტორია“ შეინახავს შედეგს, თუ რომელიმე მონაწილეს მოგვიანებით კითხვები გაუჩნდება.

შემიძლია თუ არა ამის გამოყენება ადამიანების გუნდებად დასაყოფად?

დიახ. დააყენეთ „რაოდენობა“ პირველი გუნდის წევრების რაოდენობაზე და დააჭირეთ ღილაკს „გენერაცია“ — არჩეული სახელები შეადგენენ პირველ გუნდს. წაშალეთ ისინი სიიდან და გაიმეორეთ პროცესი შემდეგი გუნდისთვის. დატოვეთ რეჟიმი „გამეორების გარეშე“ ჩართული, რათა არავინ აღმოჩნდეს ორ გუნდში ერთდროულად.

რატომ ამოვარდა ერთი და იგივე სახელი ორჯერ ზედიზედ?

იმიტომ, რომ დამოუკიდებელი გათამაშებები მეორდება, და სწორედ ასე გამოიყურება რეალური შემთხვევითობა. თითოეული გათამაშება აიგნორებს მის წინ არსებულ ყველა გათამაშებას, ამიტომ ათი სახელისგან შემდგარ სიაში ერთი და იგივე სახელის ორჯერ ზედიზედ ამოვარდნის შანსი ყოველ ჯერზე 1-ია 10-დან — ეს ჩვეულებრივი მოვლენაა და არა ინსტრუმენტის გაუმართაობა. ჩართეთ „გამეორების გარეშე“, თუ გჭირდებათ, რომ თითოეული არჩევანი ერთი გათამაშების ფარგლებში განსხვავებული იყოს.

იმახსოვრებს თუ არა ინსტრუმენტი ჩემს არჩევანს და არის თუ არა ის უფასო?

ჩანართი „ისტორია“ ინახავს თქვენს ბოლო 10 გათამაშებას უშუალოდ თქვენს ბრაუზერში, ასე რომ შეგიძლიათ აღადგინოთ, დააკოპიროთ ან წაშალოთ წინა შედეგი, და გაასუფთაოთ სია ნებისმიერ დროს. ინსტრუმენტი სრულიად უფასოა და არ საჭიროებს რეგისტრაციას, და რადგან არანაირი მონაცემი არ იგზავნება ინტერნეტში, ჩვენ ვერ შევძლებდით თქვენი არჩევანის ნახვას ან შენახვას მაშინაც კი, თუ ეს მოგვინდებოდა.