Java - קבל פריט / אלמנט אקראי מרשימה

1. הקדמה

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

2. בחירת פריט אקראי / פריטים

על מנת לקבל פריט אקראי מ- רשימה למשל, עליך ליצור מספר אינדקס אקראי ואז להביא פריט לפי מספר אינדקס שנוצר באמצעות List.get () שיטה.

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

2.1. פריט אקראי יחיד

על מנת לבחור אינדקס אקראי תוכלו להשתמש Random.nextInt (int bound) שיטה:

חלל ציבורי givenList_shouldReturnARandomElement () {List givenList = Arrays.asList (1, 2, 3); ראנד אקראי = אקראי חדש (); int randomElement = givenList.get (rand.nextInt (givenList.size ())); }

במקום אַקרַאִי בכיתה, אתה תמיד יכול להשתמש בשיטה סטטית Math.random () והכפל אותו בגודל הרשימה (Math.random () מייצר לְהַכפִּיל ערך אקראי בין 0 (כולל) ל- 1 (בלעדי), אז זכרו להעביר אותו ל int לאחר הכפל).

2.2. בחר אינדקס אקראי בסביבת ריבוי נושאים

בעת כתיבת יישומי ריבוי נושאים באמצעות הסינגל אַקרַאִי מופע מחלקה, עלול לגרום לבחירת אותו ערך עבור כל תהליך שניגש למופע זה. אנחנו תמיד יכולים ליצור מופע חדש לכל שרשור באמצעות ייעודי ThreadLocalRandom מעמד:

int randomElementIndex = ThreadLocalRandom.current (). nextInt (listSize)% givenList.size ();

2.3. בחר פריטים אקראיים עם חזרות

לפעמים כדאי לבחור כמה אלמנטים מתוך רשימה. זה די פשוט:

חלל ציבורי givenList_whenNumberElementsChosen_shouldReturnRandomElementsRepeat () {Rand Random = Random חדש (); List givenList = Arrays.asList ("אחד", "שניים", "שלוש", "ארבעה"); int numberOfElements = 2; עבור (int i = 0; i <numberOfElements; i ++) {int randomIndex = rand.nextInt (givenList.size ()); מחרוזת randomElement = givenList.get (randomIndex); }}

2.4. בחר פריטים אקראיים ללא חזרות

כאן, עליך לוודא שהאלמנט יוסר מהרשימה לאחר הבחירה:

חלל ציבורי givenList_whenNumberElementsChosen_shouldReturnRandomElementsNoRepeat () {Rand Random = Random חדש (); List givenList = Lists.newArrayList ("אחד", "שניים", "שלושה", "ארבעה"); int numberOfElements = 2; עבור (int i = 0; i <numberOfElements; i ++) {int randomIndex = rand.nextInt (givenList.size ()); מחרוזת randomElement = givenList.get (randomIndex); givenList.remove (randomIndex); }}

2.5. בחר סדרה אקראית

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

חלל ציבורי givenList_whenSeriesLengthChosen_shouldReturnRandomSeries () {List givenList = Lists.newArrayList (1, 2, 3, 4, 5, 6); Collections.shuffle (givenList); int randomSeriesLength = 3; רשימת randomSeries = givenList.subList (0, randomSeriesLength); }

3. מסקנה

במאמר זה בחנו את הדרך היעילה ביותר להביא אלמנטים אקראיים מ- רשימה instancה לתרחישים שונים.

דוגמאות לקוד ניתן למצוא ב- GitHub.