gpt4 book ai didi

java - 创建自动彩票

转载 作者:行者123 更新时间:2023-12-01 21:18:13 25 4
gpt4 key购买 nike

我想编写一个自动彩票“脚本”,它创建 2 个数组:一个保存彩票号码,另一个保存猜测本身。然后,我检查是否例如。 lottery[] 保存了guess[] 的数字,如果数字相等并且他在循环中击中了 6 个正确的数字,我希望控制台打印出他需要尝试多少次。

public static void main(String[] args) {

int[] lottery = new int[6];
int[] tipp1 = new int[6];
int randomNum;
int tipp;

for (int i = 0; i < 6; i++) {
randomNum = (int) (Math.random() * 49 + 1); // 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() * 49 + 1);// If random number is same, another number generated.
x = -1; // restart the loop
}
}
lottery[i] = randomNum;
System.out.print(lottery[i] + " ");
}

System.out.println(" ");

for (int c = 0; c < 6; c++) {
tipp = (int) (Math.random() * 49 + 1); // Random number created here.
for (int xy = 0; xy < c; xy++) {
if (tipp1[xy] == tipp) // Here, code checks if same random number generated before.
{
tipp = (int) (Math.random() * 49 + 1);// If random number is same, another number generated.
xy = -1; // restart the loop
}
}
tipp1[c] = tipp;
System.out.print(tipp1[c] + " ");
}
if (lottery.equals(tipp1)){
System.out.print("HIT!");
}
}
}

有办法做到这一点吗?

最佳答案

所以我对你的问题的理解如下:你想要一个程序来生成一组 6 个随机数,每个数字在 1 到 50 范围内 - 这代表正确的彩票号码。然后,您希望程序生成 6 个数字的随机集合,每个数字都在 1 到 50 的范围内,直到其中一个数字与彩票号码匹配。您还希望程序跟踪在获胜之前进行了多少次猜测 - 我假设这意味着彩票号码被选择一次并且不断地进行猜测直到比赛发生。

注意:我在您的代码示例中没有看到用于跟踪猜测次数的逻辑,但我确实在下面的代码中实现了此功能。

尚不清楚彩票号码的顺序是否重要。我编写了下面的代码,顺序并不重要,这意味着只要猜测包含所有 6 个彩票号码,就被视为获胜者。如果您希望顺序很重要,您应该删除对 Arrays.sort(...) 的调用

这是一个使用数组的解决方案,因为您明确表示要使用数组:

import java.util.Arrays;
import java.util.Random;

public class LotteryMain {
public static void main(String[] args) {

int[] correctNumbers = createSortedArrayOfRandomInts(6);
System.out.println("Lottery numbers: "+Arrays.toString(correctNumbers));

int tries = 0;
int[] guessNumbers = null;
do{
guessNumbers = createSortedArrayOfRandomInts(6);
System.out.println("Guessed numbers: "+Arrays.toString(guessNumbers));
tries++;
}while(!Arrays.equals(guessNumbers, correctNumbers));

System.out.println("Lottery numbers: "+Arrays.toString(correctNumbers));
System.out.println("WINNER! Number of tries: "+tries);
}

public static int[] createSortedArrayOfRandomInts(int sizeOfArray){
int[] arrayOfRandomNumbers = new int[sizeOfArray];
Random randomGen = new Random();
for (int i = 0; i < sizeOfArray; i++) {
int randomNum = -1;
do{
randomNum = randomGen.nextInt(50)+1; // Random number created here.
}while(contains(arrayOfRandomNumbers, randomNum));
arrayOfRandomNumbers[i] = randomNum;
}
Arrays.sort(arrayOfRandomNumbers);
return arrayOfRandomNumbers;
}

public static boolean contains(int[] array, int searchFor){
for(int i = 0; i < array.length; i++){
if(array[i] == searchFor)
return true;
}
return false;
}

}

这是示例输出(显然是缩短的):

...
Guessed numbers: [5, 21, 27, 36, 40, 47]
Guessed numbers: [3, 14, 15, 28, 36, 42]
Guessed numbers: [24, 27, 31, 32, 44, 49]
Guessed numbers: [19, 21, 25, 39, 42, 46]
Lottery numbers: [19, 21, 25, 39, 42, 46]
WINNER! Number of tries: 2499043

这是一个使用 Java Collections Framework 中的类的解决方案因为每个 Java 程序员都应该熟悉如何使用这些类:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class LotteryWithCollections {

public static void main(String[] args) {

List<Integer> correctNumbers = createSortedListOfRandomInts(6);
System.out.println("Lottery numbers: " + correctNumbers);

int tries = 0;
List<Integer> guessNumbers = null;
do {
guessNumbers = createSortedListOfRandomInts(6);
System.out.println("Guessed numbers: " + guessNumbers);
tries++;
} while (!guessNumbers.equals(correctNumbers));

System.out.println("Lottery numbers: " + correctNumbers);
System.out.println("WINNER! Number of tries: " + tries);
}

public static List<Integer> createSortedListOfRandomInts(int sizeOfList) {
List<Integer> listOfRandomNumbers = new ArrayList<Integer>();
Random randomGen = new Random();
for (int i = 0; i < sizeOfList; i++) {
int randomNum = randomGen.nextInt(50) + 1; // Random number created
// here.
while (listOfRandomNumbers.contains(randomNum)) {
randomNum = randomGen.nextInt(50) + 1;
}
listOfRandomNumbers.add(randomNum);
}
Collections.sort(listOfRandomNumbers);
return listOfRandomNumbers;
}
}

需要考虑的其他事情 - 现在代码允许重复猜测,跟踪以前的猜测并不允许重复相同的猜测可能会很有趣。

关于java - 创建自动彩票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39584374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com