【问题标题】:how to mess up a sequence of numbers? [duplicate]如何弄乱一个数字序列? [复制]
【发布时间】:2018-09-15 14:39:29
【问题描述】:

我需要一种算法或库来做这件事:

我假设有一个从0开始到n结束的整数序列,比如:

0,1,2,3,4,5,6,7,8,9,10,11

我想用数字键弄乱这个数字序列,所以我使用 378 作为键,算法给了我这个新的数字序列:

7,5,3,11,0,9,4,1,8,10,2

所以我的问题是。有一种算法或库可以在 java 中做到这一点吗?

【问题讨论】:

  • 这是什么意思?你想随机播放列表吗?
  • 我正是想要这个!
  • 我不认为是完全重复的,因为 OP 想要传入自定义的随机源。
  • @JacobG。您可以为随机数生成器播种,以获得可重复的结果。如果需要特定的随机化算法,您甚至可以提供自己的 Random 实现。
  • @Andreas 是的,这就是我在回答中指定的内容。但是,重复的问题没有提及这一点。似乎副本的副本提到了它,但在不同的上下文中。

标签: java


【解决方案1】:

Collections.shuffle 允许您传入自己的随机源,因此您可以使用 378 作为种子并始终收到相同的打乱列表:

var numbers = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);

Collections.shuffle(numbers, new Random(378));

System.out.println(numbers);

输出:

[4, 10, 3, 2, 0, 7, 9, 11, 5, 6, 1, 8]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 2018-06-08
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多