基本上,在坚果壳中,我想取一个随机数,比如:
73524896我想让我们使用相同的数字,但随机地重新排列如下:
46932857有没有一种方法可以让我在java中轻松地做到这一点?
发布于 2011-05-20 03:56:50
这将对您有所帮助:Random Numbers - shuffling。
不是完整的代码,只是链接中的一小段
Random rgen = new Random(); // Random number generator
int[] cards = new int[52];
//--- Initialize the array to the ints 0-51
for (int i=0; i<cards.length; i++) {
cards[i] = i;
}
//--- Shuffle by exchanging each element randomly
for (int i=0; i<cards.length; i++) {
int randomPosition = rgen.nextInt(cards.length);
int temp = cards[i];
cards[i] = cards[randomPosition];
cards[randomPosition] = temp;
}发布于 2011-05-20 03:57:55
这是我最喜欢的解决方案。(请注意,所有洗牌的概率都是相等的。)
Random rnd = new Random();
int rndInt = rnd.nextInt(10000000);
String[] rndChars = ("" + rndInt).split("(?<=.)");
Collections.shuffle(Arrays.asList(rndChars));
String result = "";
for (String s : rndChars) result += s;
int shuffled = Integer.parseInt(result);
// Print original and shuffled
System.out.println(rndInt);
System.out.println(shuffled);示例输出:
4769797
9497767发布于 2011-05-20 04:12:15
//generate random number
String number = "73524896";
//put each digit in an element of a list
List<Character> numberList = new ArrayList<Character>();
for (char c : number.toCharArray()){
numberList.add(c);
}
//shuffle
Collections.shuffle(numberList);
//output
String shuffledNumber = "";
for (Character c : numberList){
shuffledNumber += c;
}
System.out.println(shuffledNumber);https://stackoverflow.com/questions/6064089
复制相似问题