我有一个数字池(例如{3,6,7,11,20}),我需要每个数字出现在我的集合中x次.
我的解决方案是创建一个类,让它称之为"元素",两个整数(num,numOfAppearnces).
我在arrayList中创建了一个"元素"池,然后在0到list.size之间生成一个随机数,并将该数字存储在随机索引中.当numOfAppearances减少到0时,我从列表中删除了这个元素.
我的问题是,有没有其他优雅的解决方案来生成随机数,而不是从一个范围?
是的,有更短的方法来实现您描述的内容.
例如 :
Integer[] arr = {3,6,7,11,20};
List<Integer> shuffled = new ArrayList<>();
for (Integer i : arr)
shuffled.addAll (Collections.nCopies(x,i)); // add i to your List x times
Collections.shuffle(shuffled); // shuffle the List to get random order
Run Code Online (Sandbox Code Playgroud)
或者(如果你不想使用Collections.nCopies(x,i)):
Integer[] arr = {3,6,7,11,20};
List<Integer> shuffled = new ArrayList<>();
for (int j = 0; j < x; j++)
for (Integer i : arr)
shuffled.add (i);
Collections.shuffle(shuffled); // shuffle the List to get random order
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |