首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种简单的方法在java中重新排列数字?

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

Stack Overflow用户
提问于 2011-05-20 03:50:21
回答 7查看 2.6K关注 0票数 2

基本上,在坚果壳中,我想取一个随机数,比如:

代码语言:javascript
复制
73524896

我想让我们使用相同的数字,但随机地重新排列如下:

代码语言:javascript
复制
46932857

有没有一种方法可以让我在java中轻松地做到这一点?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-20 03:56:50

这将对您有所帮助:Random Numbers - shuffling。

不是完整的代码,只是链接中的一小段

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2011-05-20 03:57:55

这是我最喜欢的解决方案。(请注意,所有洗牌的概率都是相等的。)

代码语言:javascript
复制
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);

示例输出:

代码语言:javascript
复制
4769797
9497767
票数 3
EN

Stack Overflow用户

发布于 2011-05-20 04:12:15

代码语言:javascript
复制
//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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6064089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档