【问题标题】:Java random without repetitionJava随机不重复
【发布时间】:2015-11-30 03:27:30
【问题描述】:

我如何实现一个整数随机数,它可以只生成每个数字一次但不重复。我在 Android 中使用此代码。

int random = Random.nextInt((max+1 - min) + min;

问题:max和min之间有重复的数字,也有一些数字不存在。

【问题讨论】:

  • 你需要这个做什么?无论如何,你不想使用Random,你应该看到this post

标签: java android random


【解决方案1】:

而不是拥有一个包含所有可能值的列表(如 Derek Fung 所述)

  • 可以将创建的值存储在列表中
  • 检查该列表中是否有任何新创建的值,然后
    • 将其添加到列表中
    • 或创建一个新值,直到找到不在列表中的值

【讨论】:

  • 设置会更好,不是吗?
  • @piezol 取决于实现,如果是简单的java.util.List<Integer>,只需添加这些就足够了......
【解决方案2】:

你需要一个洗牌算法

https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

创建一个可能数字的数组/列表,将其随机排列,然后一次获取该数字一次

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多