Problemin formalaşdırılması
Tutaq ki, verilmiş dəyərlər diapazonunda təkrarlar olmadan tam təsadüfi ədədlər toplusu yaratmalıyıq. Yolda olan nümunələr:
- məhsullar və ya istifadəçilər üçün unikal təsadüfi kodların yaradılması
- insanların tapşırıqlara təyin edilməsi (hər biri siyahıdan təsadüfi)
- axtarış sorğusunda sözlərin dəyişdirilməsi (salam seo-shnikam)
- loto oynamaq və s.
Metod 1. Sadə
Başlamaq üçün sadə variantı nəzərdən keçirək: 10-dən 1-a qədər 10 tam ədəddən ibarət təsadüfi dəst əldə etməliyik. Excel-də quraşdırılmış funksiyadan istifadə etməklə İŞ ARASINDA (ARASINDA KƏNAR) unikallığına zəmanət verilmir. Əgər onu vərəq xanasına daxil edib 10 xanaya köçürsəniz, təkrarlar asanlıqla baş verə bilər:
Ona görə də biz başqa yolla gedəcəyik.
Excel-in bütün versiyaları bir funksiyaya malikdir RANK (RANG), sıralamaq və ya başqa sözlə, dəstdə nömrənin yuxarı mövqeyini müəyyən etmək üçün nəzərdə tutulmuşdur. Siyahıdakı ən böyük nömrənin rütbəsi=1, yuxarıdakı ikincinin rütbəsi=2 və s. var.
Funksiyanı A2 xanasına daxil edək SLCHIS (RAND) arqumentlər olmadan və düsturu 10 xana aşağı köçürün. Bu funksiya bizə 10-dan 0-ə qədər 1 təsadüfi kəsrli ədədlər dəsti yaradacaq:
Növbəti sütunda funksiyanı təqdim edirik RANKhər alınan təsadüfi nömrə üçün reytinqdəki mövqeyi müəyyən etmək üçün:
B sütununda istədiyimizi alırıq - 1-dən 10-a qədər istənilən təkrarlanmayan təsadüfi tam ədədlər.
Sırf nəzəri olaraq bir vəziyyət yarana bilər SLCHIS A sütununda bizə iki eyni təsadüfi ədəd verəcək, onların rütbələri uyğun olacaq və biz B sütununda təkrar alacağıq. Bununla belə, dəqiqliyin 15 onluq olduğunu nəzərə alsaq, belə bir ssenarinin baş vermə ehtimalı olduqca kiçikdir.
Metod 2. Mürəkkəb
Bu üsul bir az daha mürəkkəbdir, lakin yalnız bir massiv formulundan istifadə edir. Tutaq ki, bir vərəqdə 9-dən 1-yə qədər olan 50 təkrarlanmayan təsadüfi tam ədədin siyahısını yaratmalıyıq.
A2 xanasına aşağıdakı formula daxil edin, sonunda klikləyin Ctrl + Shift + Enter (massiv düsturu kimi daxil etmək üçün!) və düsturu istədiyiniz hüceyrə sayına qədər köçürün:
Metod 3. Makro
Və təbii ki, Visual Basic-də proqramlaşdırmadan istifadə edərək problemi həll edə bilərsiniz. Təsadüfi seçmə haqqında köhnə məqalələrdən birində mən artıq verilmiş intervaldan lazımi sayda təsadüfi təkrarlanmayan ədədlər istehsal edən Lotto massivinin makro funksiyasından istinad etdim.
- Bir sıradakı unikal dəyərlərin sayını necə hesablamaq olar
- Siyahıdan elementlərin təsadüfi seçimi