我想在指定的数字列表中生成两个数字。我写了这段代码,但它不起作用。任何人都可以提出更好的解决方案吗?
public classl {
public static void main(String[] args) {
int[] lottery = new int[2];
int randomNum;
for (int i = 0; i < 3; i++) {
randomNum = (int) (Math.random() * (3,9,25,41,43,50,68)); // Random number created here.
for (int x = 0; x < i; x++) {
if (lottery[x] == randomNum) // Here, code checks if same random number generated before.
{
randomNum = (int) (Math.random() * (3,9,25,41,43,50,68));// If random number is same, another number generated.
x = -1; // restart the loop
}
}
lottery[i] = randomNum;
}
for (int i = 0; i < lottery.length; i++)
System.out.print(lottery[i] + " ");
}
}
}
答案 0 :(得分:0)
您可以将这些数字存储在如下数组中:
int[] arr = {12, 13, 4, 7, 9};
然后在 arr 数组中获取一个随机数:
int rndNumber = new Random().nextInt(arr.length);
这是你解决问题的一些想法。
答案 1 :(得分:0)
我想您正在询问如何从集合中选择给定数量的随机元素。
如果这是正确的,那么你最好从一个集合而不是一个数组开始,因为集合中有很好的方法可以帮助你。以下是一些可行的方法:
List<Integer> theNumbers = Arrays.asList(3, 9, 25, 41, 43, 50, 68);
Random random = new Random();
// using uniqueness of sets
Set<Integer> results = new HashSet<>();
while (results.size() < 2)
results.add(theNumbers.get(random.nextInt(theNumbers.size()));
// using shuffle
Collections.shuffle(theNumbers);
List<Integer> results = theNumbers.sublist(0, 2);
// using streams (Java 8)
int[] results = random.ints(0, theNumbers.size())
.map(theNumbers::get).distinct().limit(2).toArray();
还有很多其他方法,但希望这会让你开始。
答案 2 :(得分:0)
Series
注意:我不鼓励使用int []来存储彩票号码。事实上,不要使用原始数组,而是使用java提供的集合,这些集合带有sprinter指向的许多实用方法。此解决方案旨在向您展示如何以您的方法倾向于
的方式完成此操作