Təkrarlanmayan təsadüfi nömrələr

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:

Təkrarlanmayan təsadüfi nömrələ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:

Təkrarlanmayan təsadüfi nömrələr

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:

Təkrarlanmayan təsadüfi nömrələr

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:

Təkrarlanmayan təsadüfi nömrələr

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

Cavab yaz