如何从给定的数字列表中使用Java生成随机数

假设我有一个数字/向量的数字,如1,3,7,9然后我需要随机猜测这个列表中的数字。 在Java中使用Random类似乎不可能这样做。 任何人都可以帮助我说出做这种事情的方法。 我必须更改用于生成随机数的数字列表。 我正在尝试实施一种战略,作为任务自动发挥战舰游戏。 请帮我这样做?

将数字放在ArrayList中并使用Collections.shuffle(arrayList);

如果您只想选择一个随机数,或者想要使用重新插入选择多个随机数(即允许多次选择相同数字的可能性),则可以生成随机索引:

List lst = ....; int index = new Random().nextInt(lst.size()); Integer randomeValue = lst.get(index); 

您也可以使用数组。 每次选择都需要O(1)

如果您需要从列表中选择多个不同的随机数,那么使用Collections.shuffle()并遍历列表将是一个更好的解决方案。 这需要所有查询的O(n)

我正在使用tordek :不是洗牌似乎是一种从源向量中选择配置数量的随机数的相当重的方法吗?

如果采取msaeed关于如何选择一个随机数的建议并重复n次,难道不是更快吗? 也许将你的随机值组合成一个Set,并继续选择直到你的设置大小足够大……( 不要忘记对源边向量中数量不足的边缘条件进行某种检查以提供配置的数量随机值