我知道 JAVA Random 类及其用途。但是我想生成一个不应该重复的随机数,直到该范围内的所有数字至少生成一次。谁能给我一些参考..?
在使用 Random 类时,我面临的问题是有些数字重复了 2 或 3 次,而有些则根本没有生成。在这种情况下,我的应用程序可能会失败,因为我有另一个线程根据生成的数字处理一些请求....当出现延迟并且下一个唯一数字不可用时,它会停止而不处理非生成的数字...
我知道 JAVA Random 类及其用途。但是我想生成一个不应该重复的随机数,直到该范围内的所有数字至少生成一次。谁能给我一些参考..?
在使用 Random 类时,我面临的问题是有些数字重复了 2 或 3 次,而有些则根本没有生成。在这种情况下,我的应用程序可能会失败,因为我有另一个线程根据生成的数字处理一些请求....当出现延迟并且下一个唯一数字不可用时,它会停止而不处理非生成的数字...
您可以生成范围内的所有值并将它们打乱。Collections.shuffle()
一旦你使用了每一个值,重复一遍。
想象一下你有一副牌,你拿一副牌,每张牌都有一次,你把它洗牌,你就会知道每张牌随机出现的顺序,只有一次。当一副牌完成后,您再次拿走所有牌并重新洗牌(或新牌组并洗牌)
注意将随机整数的范围调整为当前列表大小(每次获得新数字时它会减一)
您可以随身携带一份已经挑选出的所有数字的列表,并检查新的随机数是否在该列表中 这是一个提出相同问题的人的示例