基本上在坚果壳中我想随机打一个号码说:
73524896
我希望我们使用相同的数字,但可以随意重新排列:
46932857
我有没有办法在java中轻松完成这项工作?
答案 0 :(得分:4)
这是我最喜欢的解决方案。 (请注意,所有改组都是同样可能的。)
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
答案 1 :(得分:1)
//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);
答案 2 :(得分:0)
这会对您有所帮助: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;
}
答案 3 :(得分:0)
将其转换为字符串,获取字符数组,然后将字符数组随机化,然后将其转换回字符串。
可以让你随机化任何字符串,而不仅仅是数字。
答案 4 :(得分:0)
我想说最简单的方法是将整数解析为String,重新排列String中的数字,然后将其解析回整数。
public int rearrange(int num){
StringBuilder asStr = new StringBuilder(num + ""); //convert to string
inplaceShuffle(asStr);
return Integer.parseInt(asStr.toString());
}
答案 5 :(得分:0)
答案 6 :(得分:0)
Collections.shuffle()
获取一个列表并返回一个列表,其中包含toArray()
。 Arrays.asList()
接受一个数组并返回一个列表。 String有一个toCharArray()
和一个接受char数组的构造函数。整数有toString()
和valueOf()