有没有一种简单的方法来重新排列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()