اختيار عنصر عشوائي

السلام عليكم ورحمة الله وبركاته

اعمل على برمجة لعبة اندرويد تشبه من سيربح المليون مستخدما لغة جافا

مشكلتي اني لا اعرف كيف ابرمج الهاتف بحيث لا يختار نفس السؤال مرتين

علما اني قمت بتخزين الاسئلة في كلاس واقوم باستدعاء الاسئلة بشكل عشوائي باستخدام Random (من خلال رقم index)

لقد بحثت على الانترنت ولكن جميع الخوارزميات المتوفرة على الانترنت تفيد بعدم تكرار الرقم العشوائي لمرتين متتاليتين فقط

ولكني اريد منع Random من تكرار نفس الرقم نهائيا يعني خلال فترة حياة الميثود المسؤولة عن عرض السؤال

ملاحظة: لقد خزنت الاسئلة في مصفوفة لهذا استعمل رقم الانديكس للوصول لاي سؤال


public class Program {
    public static void main(String []args) throws Exception {
        Program context = new Program();
    }
    public Program() throws Exception {
        int count = 5;
        RandListPicker picker = new RandListPicker(count);
        String[] list = { "item 1", "item 2", "item 3", "item 4", "item 5" };
        for (int i = 0; i < count; i++) {
            int index = picker.getNewRandomIndex();
            String item = list[index];
            System.out.println(item);
        }
        System.out.println("end");
    }
}
class RandListPicker {
    private int count;
    private int countUnvisited;
    private int[] unvisitedIndexes;
    public RandListPicker(int count) {
        this.count = count;
        this.initIndexes();
    }
    public void initIndexes() {
        this.countUnvisited = this.count;
        this.unvisitedIndexes = new int[count];
        for (int i = 0; i < this.count; i++) this.unvisitedIndexes[i] = i;
    }
    public int getNewRandomIndex() throws Exception {
        if (this.countUnvisited <= 0) {
            throw new Exception("all indexes has visited");
        }
        int index = (int) (Math.random() * this.countUnvisited);
        int newIndex = this.unvisitedIndexes[index];
        this.unvisitedIndexes[index] = this.unvisitedIndexes[--this.countUnvisited];
        return newIndex;
    }
}

بتشكرك كتير اخي الله يعطيك الف عافية