מספרים אקראיים ללא חזרות

ניסוח הבעיה

הבה נניח שעלינו ליצור קבוצה של מספרים אקראיים שלמים ללא חזרות בטווח נתון של ערכים. דוגמאות בדרכים:

  • יצירת קודים אקראיים ייחודיים עבור מוצרים או משתמשים
  • הקצאת אנשים למשימות (כל אחד באקראי מהרשימה)
  • שינוי מילים בשאילתת החיפוש (שלום seo-shnikam)
  • משחק בלוטו וכו'

שיטה 1. פשוט

מלכתחילה, בואו נבחן אפשרות פשוטה: עלינו לקבל קבוצה אקראית של 10 מספרים שלמים מ-1 עד 10. שימוש בפונקציה המובנית ב-Excel בין המקרה (קצה בין) ייחודיות אינה מובטחת. אם תזין אותו בתא של גיליון ותעתיק אותו ל-10 תאים, חזרות יכולות לקרות בקלות:

מספרים אקראיים ללא חזרות

לכן, נלך בדרך אחרת.

לכל הגרסאות של Excel יש פונקציה RANK (RANG), מיועד לדירוג או, במילים אחרות, קביעת המיקום העליון של מספר בקבוצה. למספר הגדול ביותר ברשימה יש rank=1, לשני בראש יש rank=2 וכן הלאה.

בואו נזין את הפונקציה בתא A2 SLCHIS (RAND) ללא ארגומנטים ולהעתיק את הנוסחה ל-10 תאים. פונקציה זו תיצור לנו קבוצה של 10 מספרים שברים אקראיים מ-0 עד 1:

מספרים אקראיים ללא חזרות

בעמודה הבאה נציג את הפונקציה RANKכדי לקבוע את המיקום בדירוג עבור כל מספר אקראי שהתקבל:

מספרים אקראיים ללא חזרות

אנחנו מקבלים בעמודה B את מה שרצינו - כל מספר רצוי של מספרים שלמים אקראיים לא חוזרים מ-1 עד 10.

באופן תיאורטי בלבד, עלול להיווצר מצב כאשר SLCHIS ייתן לנו שני מספרים אקראיים זהים בעמודה A, הדרגות שלהם יתאימו ונקבל חזרה בעמודה B. עם זאת, ההסתברות לתרחיש כזה קטנה ביותר, בהתחשב בעובדה שהדיוק הוא 15 מקומות עשרוניים.

שיטה 2. מסובך

שיטה זו מעט יותר מסובכת, אך משתמשת רק בנוסחת מערך אחת. נניח שעלינו ליצור רשימה של 9 מספרים שלמים אקראיים שאינם חוזרים על עצמם בטווח שבין 1 ל-50 בגיליון.

הזן את הנוסחה הבאה בתא A2, לחץ בסוף Ctrl + Shift + Enter (כדי להזין אותה כנוסחת מערך!) והעתק את הנוסחה למטה למספר התאים הרצוי:

מספרים אקראיים ללא חזרות

שיטה 3. מאקרו

וכמובן, אתה יכול לפתור את הבעיה באמצעות תכנות ב-Visual Basic. באחד המאמרים הישנים על דגימה אקראית, כבר ציטטתי את פונקציית המאקרו של מערך לוטו, שמייצרת את המספר הדרוש של מספרים אקראיים שאינם חוזרים על עצמם מתוך מרווח נתון.

  • כיצד לספור את מספר הערכים הייחודיים בטווח
  • בחירה אקראית של אלמנטים מרשימה

השאירו תגובה