Java 覆盖集合中所有数字的随机数生成器

Java 覆盖集合中所有数字的随机数生成器,java,random,generator,Java,Random,Generator,我正在编写一个Android应用程序,我想生成随机数 但是,Java的RandomGenerator只提供伪随机数。这些数字重复,并不是所有的数字都被覆盖 我想要的东西,将给我不重复的数字,并将涵盖所有的数字。如何做到这一点?您可以用要循环的数字填充数据结构,然后随机化结构中元素的顺序,并逐个拉出它们。或者,您可以随机选取索引,并在这些索引处检索元素。无论您做什么(对于特定的数据结构,您会选择一个更有效的),您都必须在获取该元素时删除它。当您继续运行时,您的数据结构将变得越来越小,直到您接收到每

我正在编写一个Android应用程序,我想生成随机数


但是,Java的RandomGenerator只提供伪随机数。这些数字重复,并不是所有的数字都被覆盖


我想要的东西,将给我不重复的数字,并将涵盖所有的数字。如何做到这一点?

您可以用要循环的数字填充数据结构,然后随机化结构中元素的顺序,并逐个拉出它们。或者,您可以随机选取索引,并在这些索引处检索元素。无论您做什么(对于特定的数据结构,您会选择一个更有效的),您都必须在获取该元素时删除它。当您继续运行时,您的数据结构将变得越来越小,直到您接收到每个元素并且一无所有为止。这也确保了你永远不会两次击中同一个号码,因为你将从你的可能号码池中删除它

您可以将所有想要的随机值放入一个列表中,然后将其洗牌

List<Integer> numbers = ...
Collections.shuffle(numbers);
列表编号=。。。
收藏。洗牌(数字);

这将以随机顺序为您提供唯一的数字。

这实际上不是随机的,不是吗?在给定集合的情况下,预测下一个数字将变得越来越容易……在集合中进行迭代怎么样?:)我认为任何软件随机生成器都会给你“伪随机数”。“数字重复,并不是所有的数字都被覆盖”应该发生在一个真正的随机数生成器中。@Randly:Louis Wasserman:你是对的,但我的用例是实现幻灯片的随机播放。所以,我需要图片不重复,并且需要显示相册中的所有图片。这看起来很棒。这是一次性的,对吗?然后我按顺序访问列表?然后你可以按顺序访问列表,以及随机但唯一的对象。如果你想要任何限制号码,你也可以这样做。我没有得到限制号码部分。请你详细说明一下好吗?每次重复调用
i++
两次时,你只需每隔一秒打印一个号码。我在为这个问题绞尽脑汁后意识到了这一点。谢谢你,彼得!为这个愚蠢的错误感到抱歉!