صياغة المشكلة
لنفترض أننا بحاجة إلى إنشاء مجموعة من الأرقام العشوائية الصحيحة بدون تكرار في نطاق معين من القيم. أمثلة أثناء التنقل:
- إنشاء رموز عشوائية فريدة للمنتجات أو المستخدمين
- تعيين الأشخاص للمهام (كل واحدة بشكل عشوائي من القائمة)
- تبديل الكلمات في استعلام البحث (hello seo-shnikam)
- لعب لوتو إلخ.
الطريقة 1. بسيطة
بادئ ذي بدء ، دعنا نفكر في خيار بسيط: نحتاج إلى الحصول على مجموعة عشوائية من 10 أعداد صحيحة من 1 إلى 10. باستخدام الوظيفة المضمنة في Excel بين القضية (حافة بين) التفرد غير مضمون. إذا قمت بإدخالها في خلية ورقة ونسخها لأسفل 10 خلايا ، فيمكن أن يحدث التكرار بسهولة:
لذلك ، سنذهب في الاتجاه الآخر.
جميع إصدارات Excel لها وظيفة RANK (رن)، مخصص للترتيب أو ، بعبارة أخرى ، تحديد الموضع العلوي لرقم في مجموعة. أكبر رقم في القائمة له رتبة = 1 ، والثاني في الأعلى له رتبة = 2 ، وهكذا دواليك.
دعنا ندخل الوظيفة في الخلية A2 SLCHIS (راند) بدون وسيطات وانسخ الصيغة إلى أسفل 10 خلايا. ستولد لنا هذه الوظيفة مجموعة من 10 أرقام كسور عشوائية من 0 إلى 1:
في العمود التالي نقدم الوظيفة RANKلتحديد المركز في الترتيب لكل رقم عشوائي تم استلامه:
نحصل في العمود B على ما أردناه - أي عدد مرغوب فيه من الأعداد الصحيحة العشوائية غير المتكررة من 1 إلى 10.
من الناحية النظرية البحتة ، قد تنشأ حالة عندما SLCHIS سوف يعطينا رقمين عشوائيين متطابقين في العمود A ، وسوف تتطابق رتبهما وسوف نحصل على تكرار في العمود B. ومع ذلك ، فإن احتمال مثل هذا السيناريو صغير للغاية ، نظرًا لحقيقة أن الدقة هي 15 منزلاً عشريًا.
الطريقة 2. معقدة
هذه الطريقة أكثر تعقيدًا بعض الشيء ، لكنها تستخدم صيغة صفيف واحدة فقط. لنفترض أننا بحاجة إلى إنشاء قائمة من 9 أعداد صحيحة عشوائية غير متكررة في النطاق من 1 إلى 50 على ورقة.
أدخل الصيغة التالية في الخلية A2 ، وانقر في النهاية كترل + شيفت + إنتر (لإدخالها كصيغة صفيف!) وانسخ الصيغة إلى عدد الخلايا المطلوب:
الطريقة الثالثة. ماكرو
وبالطبع يمكنك حل المشكلة باستخدام البرمجة في Visual Basic. في إحدى المقالات القديمة حول أخذ العينات العشوائية ، أشرت بالفعل إلى دالة ماكرو لوتو ، والتي تنتج العدد المطلوب من الأرقام العشوائية غير المتكررة من فترة زمنية معينة.
- كيفية حساب عدد القيم الفريدة في النطاق
- اختيار عشوائي للعناصر من القائمة