我想要使用隨機生成器在0和9之間的數字區間。例如,如果我已經收到0,2,7我不想再次使用這些數字,而是希望在給定間隔[1或3或4或5或6或8或9]之間休息一次。從區間中排除數字,檢索其餘區域
0
A
回答
3
由於鮑里斯蜘蛛說:
// We want numbers between 0 and 9 inclusive
int min = 0, max = 9;
// We need a Collection, lets use a List, could use any ordered collection here
List<Integer> nums = new ArrayList<>();
// Put the numbers in the collection
for (int n=min; n<=max; n++) { nums.add(n); }
// Randomly sort (shuffle) the collection
Collections.shuffle(nums);
// Pull numbers from the collection (the order should be random now)
for (int count=0; count<nums.length; count++) {
System.out.println("Number " + count + " is " + nums.get(count));
}
-1
這是一種替代方法來Java.util.Collections
,它使用Java.util.Random
類。
/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
final static int RAND_CAP = 9;
public static void main (String[] args) throws java.lang.Exception
{
ArrayList<Integer> usedNumbers = new ArrayList<Integer>();
Random rand = new Random(System.currentTimeMillis());
while (usedNumbers.size() < RAND_CAP) {
int randNum = Math.abs(rand.nextInt() % RAND_CAP) + 1;
if (!usedNumbers.contains(randNum)) {
usedNumbers.add(randNum);
System.out.println(randNum);
}
}
}
}
+0
由於性能隨着達到所需數字的末尾而下降,因此這非常糟糕。事實上,沒有理由讓第二個數字返回 - 「random.nextInt」可以返回相同的數字。進一步'List.contains'是'O(n)','Set.contains'是'O(1)'。這個答案顯示了對程序性隨機性和Java集合API的基本誤解。 – 2014-12-02 08:17:37
0
該解決方案在的Math.random更好的時間性能運行。
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(1);
numbers.add(2); //or more
while (!numbers.isEmpty()) {
System.out.println(numbers.remove((int) (Math.random() * numbers.size())));
}
0
與Java 8,你可以做以下
List<Integer> integers = IntStream.range(0, 10).boxed().collect(Collectors.toList());
Collections.shuffle(integers);
如該answer所示。
相關問題
- 1. imagefill()將該區域的其餘區域變爲黑色
- 2. ASP.NET MVC排除除區域以外的所有區域
- 3. MVC區域路由 - 如何排除URL中的區域名稱
- 4. JavaScript函數不從HTML文本區域檢索字符串
- 5. SmartGWT ListGrid - 從選區中排除字段
- 6. 刪除.widget區域,.comment區域和.main-navigation之間的空間。
- 7. 在Jenkins中用Git排除區域
- 8. 如何排除Svg中的clippath區域
- 9. 在addEventListener中排除DOM的區域
- 10. 從Google表格檢索日期中刪除時間和時區
- 11. 多餘空白區域
- 12. 從其餘api檢索大量數據
- 13. 檢索「時間」字段時區錯誤?
- 14. 刪除mapview中除選定區域以外的所有其他區域
- 15. 搜索跨區域不連續區域
- 16. mongodb如何找到排除區域,$ geoExclusion?
- 17. 從客戶區域檢索數據WordPress的
- 18. 從「顏料桶」中排除蒙面區域填充UIImage
- 19. 從S3中排除特定文件跨區域複製
- 20. 從通知區域中刪除NotifyIcon
- 21. 如何從DateTime值中刪除區域?
- 22. xtext - 如何設置代碼區域,排除語法檢查
- 23. Sytem區域不檢索在jvm startyup
- 24. 如何從QGraphicsView中檢索選定區域?
- 25. 檢測iphone區域
- 26. 刪除一些字段之間的空白區域,但不是其他字段
- 27. 如何將參數從一個區域傳遞到其他區域
- 28. 從區域切出一個區域
- 29. 從區域
- 30. 區域適配器和區域行爲之間的區別?
這不是隨機的。你想在'Collection'中把數字'[1,9]'洗牌。從頂部拉。 – 2014-12-01 23:36:00