Siyahıdan təsadüfi seçim

İstənilən siyahını — adlar, tapşırıqlar və ya ideyaları daxil edin və alətimiz ədalətli şəkildə təsadüfi seçim etsin. Hər bir püşkatma birbaşa brauzerinizdə həyata keçirilir və siyahınız cihazınızı heç vaxt tərk etmir.

Seçmək üçün Yarat düyməsini basın
Ayırıcı avtomatik müəyyən edilir, lakin onu aşağıdan da seçə bilərsiniz.
Əlavə Seçimlər

Tədbirdə hədiyyə qazananı müəyyən etmək, şagirdi lövhəyə çağırmaq və ya zibili kimin atacağını həll etmək lazımdır? Bu pulsuz onlayn alət daxil etdiyiniz istənilən siyahıdan ədalətli şəkildə təsadüfi seçim edir. Bütün məlumatları “Elementlər” xanasına daxil edin — hər sətirə biri olmaqla və ya vergüllə ayırmaqla — “Say” xanasında neçə nəticə istədiyinizi seçin və “Yarat” düyməsini sıxın. Siyahıda ən azı iki bənd olmalıdır və uzunluğu hər biri 200 simvola qədər olan 1000 elementi ehtiva edə bilər.

Hər bir seçim brauzerinizin sistemində olan təsadüfilikdən istifadə edərək kriptoqrafik olaraq güclü təsadüfi dəyərlər təmin edən Web Crypto API (crypto.getRandomValues) vasitəsilə birbaşa brauzerinizdə həyata keçirilir. Siyahınız heç vaxt serverə göndərilmir, qeydə alınmır və bizim tərəfimizdən görülmür. Bu məqam xüsusilə əhəmiyyətlidir, çünki insanlar adətən müştəri siyahılarını, sinif jurnallarını və ya həmkarlarının adlarını kopyalayırlar. “Fayldan yükləyin” düyməsi də bu vədi qoruyur: brauzeriniz faylı birbaşa oxuyur və siyahını xanada tamamilə lokal olaraq doldurur, yəni heç nə internetə yüklənmir.

Seçimlər insanların real olaraq istifadə etdikləri siyahılar üçün nəzərdə tutulub. “Ayırıcı” funksiyası “Avtomatik” olaraq təyin edilib. O, sətir sonlarını və vergülləri sərbəst şəkildə tanıyaraq məlumatınızın hansı formatda olduğuna qərar verir; beləliklə elektron cədvəldən, mesajdan və ya sənəddən kopyalanan siyahı heç bir redaktə tələb etmədən işləyir. Formatlar qarışıq olduqda onu “Yeni sətir”, “Vergül” və ya “Boşluq” üzərində kilidləyə bilərsiniz. Nəzərə alın ki, “Boşluq” həmişə şüurlu bir seçimdir və heç vaxt avtomatik işə düşmür, çünki tam adlar kimi məlumatların özündə onsuz da boşluqlar var və onları boşluqlara görə bölmək nəticəni tamamilə korlaya bilər. “Say” 1-dən 100-ə qədər neçə elementin seçiləcəyinə qərar verir. 200 iştirakçı arasından üç qalib seçirsiniz? İştirakçıların adlarını daxil edin, “Say” funksiyasını 3 olaraq təyin edin və “Yarat” düyməsini sıxın. İki nəzarət elementi yalnız seçiləcək miqdar 2 və ya daha çox olduqda tətbiq olunur və o vaxta qədər passiv qalır: bir elementin eyni vaxtda iki dəfə çıxıb-çıxmayacağını müəyyən edən “Təkrarsız” funksiyası və seçilmiş nəticələrin bir-birindən necə ayrılacağını tənzimləyən “Çıxış formatı” — yəni nəticələr “Hər biri yeni sətirdə”, “Boşluqla ayrılmış” və ya “Vergüllə ayrılmış” şəklində göstərilir.

“Elementlər” xanasının daxilində yerləşən düymələr sırası redaktə işlərini yerinə yetirir. “Fayldan yükləyin” siyahını sadə mətn və ya CSV faylından birbaşa xanaya əlavə edir. “Qarışıq” xanadakı elementlərin sırasını qarışdırır, “Sort” onları rəqəmlərin təbii ardıcıllığı nəzərə alınmaqla əlifba sırası ilə düzür (və yenidən klikləmək sıranı tərsinə çevirir), “Təmizlə” isə siyahını tamamilə silir. “Nümunə məlumatları ilə doldurun” düyməsi bir kliklə aləti sınaqdan keçirmək üçün qısa bir nümunə siyahı əlavə edir, “Məzmuna uyğunlaşdırmaq üçün genişləndirin” isə uzun siyahını tam göstərmək üçün pəncərəni böyüdür və “Defolt ölçüyə yığışdırın” onu yenidən əvvəlki halına qaytarır. Nəticələrin altındakı “Hamısını kopyala” düyməsi hər bir seçimi kopyalayır, “Faylda saxla” isə onları cihazınıza yazır, “Tarixçə” isə əvvəlki nəticəyə bir kliklə qayıtmaq üçün son 10 püşkatmanı brauzerinizin yaddaşında saxlayır.

Seçim əslində necə edilir? Siz “Yarat” düyməsini sıxdığınız zaman səhifə crypto.getRandomValues vasitəsilə brauzerdən təsadüfi dəyərlər tələb edir və siyahınızdakı mövqeləri seçmək üçün onlardan istifadə edir; Math.random() kimi yalançı təsadüfi (pseudo-random) JavaScript funksiyasına etibar edilmir. Sadə bir 32 bitlik dəyərin mövqeyə çevrilməsi prosesi, bir çox digər alətlərin səssizcə səhvə yol verdiyi yerdir: bu dəyəri siyahının uzunluğuna (modul) bölmək ən asan və ən qərəzli yanaşmadır, çünki əgər uzunluq 2^32-ni tam bölmürsə, siyahının əvvəlindəki elementlər digərlərinə nisbətən daha tez-tez çıxır. Bu qüsur modulo bias (modul qərəzliliyi) adlanır və nəzəri deyil, tamamilə ölçülə biləndir. Bizim alətimiz isə bunun əvəzinə siyahı uzunluğunun tam vurulmuş ən böyük dəyərini aşan istənilən dəyəri rədd edir və püşkü yenidən çəkir — bu üsul rejection sampling (rədd etməklə seçim) adlanır. Bu bir neçə əlavə dövrə bahasına başa gəlsə də, təxmini deyil, dəqiq və ədalətli zəmanət verir. Siyahıdakı mövqe heç nəyi dəyişmir: birinci və sonuncu elementlərin hər bir püşkatmada seçilmə ehtimalı tamamilə eynidir.

“Təkrarsız” açarı statistika elminin ayrıca adlandırdığı iki tam fərqli püşkatma növünü ayırır. Bu funksiya aktiv olduqda alət Fisher-Yates alqoritmi ilə siyahınızın surətini qarışdırır və seçimləri ən üstdən götürür — yəni şlyapadan bilet çıxarıb onları geri qaytarmamaqla eyni şeydir; heç kim iki dəfə seçilmir və bu ölçüdəki hər bir qrupun şansı bərabərdir. Bu, əvəzetmə olmadan seçim (sampling without replacement) adlanır və məhz bu funksiya sizə qalibləri, komandaları və çıxış ardıcıllığını təyin etmək üçün lazımdır. Funksiya söndürüldükdə isə, hər bir seçim bütün siyahıdan asılı olmayaraq edilir, ona görə də eyni element birdən çox qarşınıza çıxa bilər — bu, əvəzetmə ilə seçimdir (sampling with replacement); təkrar püşkatmalar və ya sürətli statistik nümunələr kimi bütün iştirakçıların hər raundda iştirak edə bildiyi hallarda istifadə olunur. Heç bir rejim digərindən daha ədalətli deyil; onlar sadəcə fərqli məqsədlərə xidmət edir.

Ədalətli püşkatma qətiyyən ədalətli görünməməlidir. On nəfərdən beşini təsadüfi olaraq seçin, və siz asanlıqla orijinal siyahıda bir-birinin ardınca olan iki nəticəni və ya təkrarlanmaya icazə verdiyiniz təqdirdə eyni adı ard-arda iki dəfə görəcəksiniz; bunların hamısı tamamilə normaldır. Hər bir püşk müstəqildir: əvvəlki seçimlər sonrakı seçimlərə zərrə qədər də təsir etmir və heç bir ad çıxmağa “növbəti” və ya məcbur deyil. Əksini iddia edən hiss oyunçu xətasıdır (gambler's fallacy) və bizi təsadüfi seçim etməkdə belə bacarıqsız edən də məhz elə bu hissdir — insandan təsadüfi olaraq seçim etməsini xahiş etdikdə, o, birinci və sonuncu elementləri seçməkdən qaçır, adı təkrarlamamağa çalışır və seçimlərini təsadüfiliyin heç vaxt etmədiyi qədər bərabər şəkildə yayır. Şübhə doğuracaq dərəcədə səliqəli nəticə yalnız insan əlinin işi ola bilər; həqiqi təsadüfilik isə daha xaotik və topalaşmış şəkildə olur.

Niyə məhz bu təsadüfi seçim alətini seçməlisiniz?

Təsadüfi seçimlər hər hansı bir qərarın şübhələrdən uzaq olması lazım gələn hallarda öz sözünü deyir. Azərbaycanda müəllimlər şagirdləri lövhəyə çağırır və sinfi layihə qruplarına ayırırlar. Yayımçılar və marketoloqlar nəticəyə inanmalı olan auditoriya qarşısında hədiyyə və püşk qaliblərini seçirlər. Menecerlər heç kimin könüllü olmadığı tapşırıqları təqdim edir, komandalar isə nümayişin ardıcıllığını müəyyənləşdirirlər. Tədqiqatçılar yoxlama üçün qeydlərdən təsadüfi nümunələr çıxarırlar. Ailələr nəyə baxmaq barədə mübahisələrə son qoyur, ac qrup isə yemək üçün məkan seçir. Bütün bunların ortaq cəhəti sonradan hər kəsin izah edə biləcəyi bir seçimdir: püşkatma kriptoqrafik təsadüfilikdən istifadə edir, yalnız sizin cihazınızda baş verir və kimsə soruşduqda “Tarixçə” nəticəni yadda saxlayır.

Alətimizin bilməyə dəyər olan bəzi məhdudiyyətləri də mövcuddur. Alət siyahınızda olduğundan daha çox fərqli elementi seçə bilməz — üç qalib seçmək üçün siyahıda ən azı üç ad olmalıdır — həmçinin alət maksimum 100 seçimə icazə verməklə yanaşı, hər biri 200 simvoldan ibarət olmaqla 1000 elementi özündə saxlaya bilər. “Qarışıq” və “Sort” funksiyaları sətir-sətir işləyir; belə ki, eyni sətirdə daxil edilən və vergüllə ayrılan siyahı yalnız hər bir element yeni sətirə keçirildiyi zaman yenidən sıralanır; bundan başqa həmin düymələr püşkatmanı deyil siyahını dəyişdirir və püşkatma prosesi elementlərin sırasından asılı olmayaraq həmişə ədalətlidir. Hər bir element eyni zamanda müvafiq qaydada bir xalda qiymətləndirilir, buna görə də bir adın iki xalla sayılmasını istədiyiniz püşkatmada, həmin adın siyahıya iki dəfə yazılması mütləqdir. Bu limitlər çərçivəsində isə verilən zəmanət çox güclüdür — hər bir püşkatma prosesində siyahınızdakı bütün elementlərin şansı tamamilə bərabərdir.

FAQ

Siyahıdan necə təsadüfi bir ad seçə bilərəm?

Siyahıdakı adları “Elementlər” xanasına əlavə edin — hər biri yeni sətirdə olmaqla, və ya onları vergül yaxud boşluqla ayırmaqla. Daha sonra “Say” xanasında 1 rəqəminin qaldığına əmin olub “Yarat” düyməsini sıxın. Bir ad dərhal seçiləcəkdir. Eyni zamanda bir neçə ad çıxarmaq üçün “Say” dəyərini ehtiyacınız olan rəqəmə qədər artırın.

Bu seçim həqiqətən ədalətlidir?

Bəli. Hər bir seçim brauzerinizin Web Crypto API (crypto.getRandomValues) interfeysindən və eyni zamanda sadəlövh tətbiqlərin səbəb olduğu modul qərəzliliyini aradan qaldıran rejection sampling (rədd etməklə seçim) metodundan istifadə edir. Siyahıdakı mövqeyindən asılı olmayaraq hər bir element eyni ehtimala malikdir və bir neçə fərqli elementin seçilməsi üçün Fisher-Yates qarışdırma alqoritmindən istifadə edilir ki, bu ölçüdəki hər bir qrup da eyni dərəcədə mümkün olsun.

Mənim siyahım sizin serverinizə yüklənir?

Xeyr. Püşkatma prosesi yalnız sizin brauzerinizdə lokal olaraq həyata keçirilir: siyahı, püşklər və tarixçə heç vaxt cihazınızı tərk etmir, buna görə də istənilən adları, e-poçtları və ya istənilən şəxsi siyahıları əlavə etmək tamamilə təhlükəsizdir. “Fayldan yükləyin” düyməsi də lokal olaraq işləyir — brauzeriniz faylın özünü oxuyur və heç nə internetə yüklənmir.

Siyahını hər sətirdə bir maddə yerinə, vergül və ya boşluqla ayrılmış şəkildə əlavə edə bilərəm?

Bəli. “Ayırıcı” funksiyası “Avtomatik” olaraq təyin edilib. O, sətir sonlarını və vergülləri fərqləndirir, beləliklə elektron cədvəldən, mesajdan və ya sənəddən kopyalanan siyahı heç bir düzəliş edilmədən eyni şəkildə işləyir. Boşluqla ayrılmış siyahı əlavə bir addım tələb edir — “Ayırıcı” dəyərini “Boşluq” olaraq təyin edin — çünki tam adlar kimi məlumatların özündə onsuz da boşluqlar var və heç vaxt boşluqlara görə avtomatik olaraq bölünmürlər. Formatlar qarışıq olduqda “Ayırıcı” funksiyasını “Yeni sətir” və ya “Vergül” olaraq kilidləyin.

“Təkrarsız” funksiyası necə işləyir?

“Təkrarsız” funksiyası aktiv edildikdə, hər bir seçilmiş element fərqli olur — bu, sanki bir şlyapadan biletləri bir-bir çıxarıb, lakin yenidən həmin şlyapaya qoymamağa bənzəyir və qalibləri və ya komandaları seçmək üçün xüsusi əhəmiyyət daşıyır. Bu funksiya söndürüldükdə isə eyni element birdən çox görünə bilər ki, statistiklər bunu əvəzetmə ilə seçim adlandırırlar.

Niyə “Təkrarsız” və “Çıxış formatı” nəzarət elementləri passiv görünür?

Çünki hər ikisi yalnız birdən çox elementi seçdiyiniz zaman keçərlidir, necə ki onların yanındakı məlumatda qeyd edilib: “Yalnız Say 1-dən çox olduqda tətbiq olunur”. “Say” dəyərini 2 və ya daha yuxarı təyin etdikdə hər iki funksiya aktiv olacaqdır; bir nəticə seçildikdə isə nüsxələməyə və ya ayırmağa heç nə qalmır.

“Çıxış formatı” seçimi nə üçün lazımdır?

O, bir neçə seçimin necə görünəcəyini və kopyalanacağını müəyyən edir: “Hər biri yeni sətirdə”, çatda sürətli mesajlaşma üçün “Boşluqla ayrılmış” və ya elektron cədvələ və ya skriptə əlavə etmək üçün “Vergüllə ayrılmış”. Bu funksiya “Say” rəqəmi 2 və ya daha çox olduqda aktiv olur.

“Qarışıq” və “Sort” düymələri necə işləyir?

“Qarışıq” düyməsi “Elementlər” xanasındakı sətirlərin sırasını qarışdırır, “Sort” isə onları rəqəmlərin təbii ardıcıllığı nəzərə alınmaqla əlifba sırası ilə düzür — həmin düyməni bir daha sıxdıqda sıra tərsinə çevrilir. Hər iki düymə püşkün necə çıxmasını deyil, yalnız daxil etdiyiniz siyahının sırasını dəyişdirir: püşkatma prosesi isə elementlərin sırasından asılı olmayaraq həmişə ədalətlidir.

Siyahı maksimum nə qədər elementi ehtiva edə bilər və eyni anda neçə seçim edə bilərəm?

Siyahı hər biri 200 simvol olmaqla 2-dən 1000-ə qədər element tutur və bir püşkdə 100-ə qədər seçim çıxarır. Boş sətirlər və ətrafdakı boşluqlar nəzərə alınmır, buna görə də elektron cədvəl və ya sənəddən daxil edilmiş siyahı olduğu kimi işləyir.

Bu alət hədiyyə və ya püşkatma qaliblərini seçmək üçün uyğundurmu?

Bəli, və bu alətin ən çox istifadə edildiyi məqsədlərdən biridir. İştirakçıların adlarını əlavə edin, “Say” rəqəmini hədiyyələrin sayına uyğunlaşdırın, heç kimin iki dəfə qazanmaması üçün “Təkrarsız” funksiyasını işə salın və “Yarat” düyməsini sıxın. Püşk kriptoqrafik olaraq güclü təsadüfilikdən istifadə etdiyi və yalnız sizin cihazınızda çalışdığı üçün bu prosesi izah etmək asandır; həmçinin iştirakçılardan kimsə narazı qalarsa, “Tarixçə” vasitəsilə nəticəni təsdiqləyə bilərsiniz.

Komandalar yaratmaq üçün bundan istifadə edə bilərəmmi?

Bəli. “Say” rəqəmini birinci komandanın ölçüsünə təyin edin və “Yarat” düyməsini sıxın — artıq birinci komanda hazırdır. Həmin iştirakçıların adlarını siyahıdan silin və bunu digər komandalar üçün də təkrar edin. Heç kimin eyni anda iki komandaya düşməməsi üçün “Təkrarsız” funksiyasını açıq saxlayın.

Niyə eyni ad iki dəfə ard-arda çıxdı?

Çünki müstəqil püşklərdə təkrar mümkündür və təsadüfiliyin görünüşü məhz bu formadadır. Hər bir püşkatma əvvəlki püşkatmaya heç bir təsir göstərmir, ona görə də on nəfərlik siyahıda eyni adın iki dəfə ardıcıl gəlməsi şansı hər dəfə 10-da 1-dir — bu adi bir haldır və sistem xətası deyil. Yalnız bir püşk çərçivəsində hər bir seçimin fərqli olmasını istəyirsinizsə, “Təkrarsız” rejimini işə salın.

Alət mənim seçimlərimi yadda saxlayırmı və ümumiyyətlə ödənişsizdirmi?

“Tarixçə” son 10 püşkü öz brauzerinizdə yadda saxlayır, beləliklə əvvəlki nəticəni bərpa edə, kopyalaya və ya silə bilər və istədiyiniz zaman siyahını təmizləyə bilərsiniz. Alət qeydiyyat tələb etmədən tamamilə ödənişsizdir, və heç bir məlumat internetə sızmadığı üçün istəsək belə sizin seçimlərinizi saxlaya və ya görə bilmərik.