我得到了一個數字池(例如{3,6,7,11,20}),我需要每個數字出現在我的收藏x次。如何從不相互關注的數字池中生成一個隨機數
我的解決方案是創建一個類,讓我們稱之爲「元素」,兩個整數(num,numOfAppearnces)。
我在arrayList中創建了一個「元素」池,然後生成一個介於0到list.size之間的隨機數,並獲得存儲在隨機索引中的數字。 當numOfAppearances減少到0時,我從列表中刪除了這個元素。
我的問題是,有沒有其他優雅的解決方案來產生隨機數,而不是從一個範圍?
我建議 「搜索」 你問之前。 http://stackoverflow.com/questions/2019417/access-random-item-in-list –
我會做類似於你的解決方案,但只是把它們放在一個數組中,並生成一個0-array.size之間的隨機數並使用它作爲索引。 – nesohc
這個問題的「最佳」解決方案將取決於'x'的值。如果它很高,並且不同值的數量也很高,並且內存使用率是一個問題,那麼可能需要更高效的內存解決方案。否則,只需將所有數字(包括'x'副本)放入一個數組並將其混洗即可。 –