Takrorlashsiz tasodifiy raqamlar

Muammoni shakllantirish

Faraz qilaylik, berilgan qiymatlar oralig‘ida takroriy takrorlanmasdan butun sonli tasodifiy sonlar to‘plamini yaratishimiz kerak. Yo'lda misollar:

  • mahsulotlar yoki foydalanuvchilar uchun noyob tasodifiy kodlarni yaratish
  • odamlarni vazifalarga tayinlash (har biri tasodifiy ro'yxatdan)
  • qidiruv so'rovida so'zlarni almashtirish (salom seo-shnikam)
  • lotto o'ynash va boshqalar.

1-usul. Oddiy

Boshlash uchun oddiy variantni ko'rib chiqaylik: 10 dan 1 gacha bo'lgan 10 ta butun sonning tasodifiy to'plamini olishimiz kerak. Excelga o'rnatilgan funksiyadan foydalanish ISHLAB CHIQISH ORASI (Orasida) o'ziga xoslik kafolatlanmaydi. Agar siz uni varaq katakchasiga kiritib, 10 ta katakka nusxa ko'chirsangiz, takrorlashlar oson bo'lishi mumkin:

Takrorlashsiz tasodifiy raqamlar

Shuning uchun biz boshqa yo'ldan boramiz.

Excelning barcha versiyalarida funksiya mavjud RANK (RANG), tartiblash yoki boshqacha qilib aytganda, to'plamdagi raqamning yuqori o'rnini aniqlash uchun mo'ljallangan. Ro'yxatdagi eng katta raqam rank=1, yuqoridagi ikkinchi raqam =2 va hokazo.

Funksiyani A2 katakka kiritamiz SLCHIS (RAND) argumentlarsiz va formulani 10 katakchaga ko'chiring. Bu funksiya bizga 10 dan 0 gacha bo‘lgan 1 ta tasodifiy kasr sonlar to‘plamini yaratadi:

Takrorlashsiz tasodifiy raqamlar

Keyingi ustunda biz funktsiyani kiritamiz RANKHar bir olingan tasodifiy raqam uchun reytingdagi o'rnini aniqlash uchun:

Takrorlashsiz tasodifiy raqamlar

Biz B ustunida biz xohlagan narsani olamiz - 1 dan 10 gacha bo'lgan takrorlanmaydigan tasodifiy butun sonlarning istalgan istalgan soni.

Sof nazariy jihatdan, vaziyat yuzaga kelishi mumkin SLCHIS bizga A ustunida ikkita bir xil tasodifiy sonni beradi, ularning darajalari mos keladi va biz B ustunida takrorlashni olamiz. Biroq, bunday stsenariyning ehtimoli juda kichik, chunki aniqlik 15 kasrdan iborat.

2-usul. Murakkab

Bu usul biroz murakkabroq, lekin faqat bitta massiv formulasidan foydalanadi. Aytaylik, biz varaqda 9 dan 1 gacha bo'lgan oraliqda 50 ta takrorlanmaydigan tasodifiy butun sonlar ro'yxatini yaratishimiz kerak.

A2 katakchaga quyidagi formulani kiriting, oxirida bosing Ctrl + Shift + Enter tugmalarini bosing (uni massiv formulasi sifatida kiritish uchun!) va formulani kerakli katakchalar soniga ko'chiring:

Takrorlashsiz tasodifiy raqamlar

3-usul. Makro

Va, albatta, Visual Basic-da dasturlash yordamida muammoni hal qilishingiz mumkin. Tasodifiy tanlab olish haqidagi eski maqolalardan birida men ma'lum bir oraliqdan kerakli miqdordagi tasodifiy takrorlanmaydigan raqamlarni ishlab chiqaradigan Lotto massivining makro funktsiyasini aytib o'tdim.

  • Bir qatordagi noyob qiymatlar sonini qanday hisoblash mumkin
  • Ro'yxatdagi elementlarni tasodifiy tanlash

Leave a Reply