有没有一种简单的方法来重新排列java中的数字?

基本上在一个坚果壳我想取一个随机数说:

73524896 

我想给我们相同的数字,但随机重新排列如下:

 46932857 

有没有办法在java中轻松完成这项工作?

这将对您有所帮助: 随机数 – 改组 。

不是完整的代码,只是链接的片段

 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 

这是我最喜欢的解决方案。 (请注意,所有改组都是同样可能的。)

 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 
 //generate random number String number = "73524896"; //put each digit in an element of a list List numberList = new ArrayList(); 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); 

将其转换为字符串,获取字符数组,然后随机化字符数组,并将其转换回字符串。

这会让你随机化任何字符串,而不仅仅是数字。

我想说最简单的方法是将整数解析为String,重新排列String中的数字,然后将其解析回整数。

 public int rearrange(int num){ StringBuilder asStr = new StringBuilder(num + ""); //convert to string inplaceShuffle(asStr); return Integer.parseInt(asStr.toString()); } 

(1)将数字转换为字符串

(2)使用标准的混洗算法来混洗字符

(3)转换回数字

Collections.shuffle()接受一个列表并返回一个列表,其中包含一个toArray()Arrays.asList()接受一个数组并返回一个列表。 String有一个toCharArray()和一个接受char数组的构造函数。 整数有toString()valueOf()