首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中随机化列表元素(shuffle)

在Java中随机化列表元素(shuffle)
EN

Stack Overflow用户
提问于 2016-10-09 22:14:22
回答 1查看 183关注 0票数 0

我正在写一个程序,它要求我使用预定义的函数对元素列表进行混洗,以生成提供给混洗器的随机性。random函数返回一个介于[0,1)之间的浮点数给shuffling函数,然后shuffler使用这种随机性来决定哪些元素应该放在列表中的哪个位置。

下面是我用来进行实验的元素的示例列表:

{“对象化”,“简化”,“减少”,“重用”,“建立”,“修辞”,“堡垒”,“微笑”,“破折号”,“重新定位”,“修饰”,"dapple",“点”,“重新布线”,“纵横”}

我的问题是,考虑到我可能有更大的元素池需要重新排列,什么是对这些元素进行排序的好方法?

EN

回答 1

Stack Overflow用户

发布于 2016-10-09 22:38:02

您可以使用此类对元素进行混洗和排序:

代码语言:javascript
复制
import java.util.List;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;

class ShuffleAndSort<T>
{
  List<T> list;
  public Shuffle(List<T> list)
  {
    this.list = list;
  }

  // Fisher–Yates shuffle
  public void shuffleArray(List<T> list)
  {
    Random random = ThreadLocalRandom.current();
    for (int i = list.size() - 1; i > 0; i--)
    {
      int index = random.nextInt(i + 1);
      // Simple swap
      T a = list.get(index);
      list.set(index, list.get(i));
      list.set(i, a);
    }
  }
  public boolean isInOrder(){
      //... to implement
  }
}

要对Bogosort进行排序,请考虑混洗,直到列表排序:

代码语言:javascript
复制
while(!isInOrder(list))
    myShuffle.shuffle(list);

注:

我建议使用ArrayList

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39944561

复制
相关文章

相似问题

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