我正在尝试制作一个产生唯一数字的随机整数生成器。
有没有人有任何想法怎么可能?
答案 0 :(得分:4)
如果你的数字范围足够小,那么这非常简单实用:
final List<Integer> sack = new ArrayList<>(RANGE);
for (int i = 0; i < RANGE; i++) sack.add(i);
Collections.shuffle(sack);
现在只需按顺序从sack
中提取项目。
答案 1 :(得分:1)
一个简单的算法是:
HashSet<Integer> set
set
=&gt;中不存在使用该随机数并将其存储在set
set
中,请返回第2步请注意,由于唯一性约束,这些数字不会是真正随机的。
答案 2 :(得分:1)
如果您正在寻找的是全局唯一标识符,您可能需要考虑java的UUID类,该类生成的ID只会在整个世界中创建一次
import java.util.UUID;
public class Test {
public static void main(String[] args) {
System.out.println(UUID.randomUUID());
}
}
但是,字母数字不是整数
答案 3 :(得分:0)
没有像独特的整数随机这样的东西。
你被限制在最好的情况下,数字2到64的力量是相当大的数字。
唯一值的问题在于您需要什么。它们必须是单一应用程序运行的独特之处,还是它们必须在整个应用程序中保持独特性?
所以你将有很多方法来创建一个随机数生成器。 UUID是一个选项,但assyliasaproach也很好Fisher-Yates shuffle
就是很好的例子。
对于此系列,您可以添加类似的内容。
如果您选择了List作为容器,则可以使用 Collections.shuffle()
对其进行随机播放