为Sudoku精炼随机数生成器

时间:2014-07-25 18:47:41

标签: java random numbers sudoku

我正在努力构建我的第一个应用程序,并且我正在构建一个Sudoku手机游戏。我已经构建了随机数生成器,我只是想弄清楚如何编写它以便它只生成1-9(非零)之间的数字,并且每个数字只生成一次。以下是我到目前为止的情况:

package randomNumber;

import java.util.Random; 

public class OneToNine {

    public static final void main(String... aArgs) {
        log ("generating random integers in range 1-9");
        Random randomGenerator = new Random();
        for (int idx = 1; idx <= 9; ++idx) {
            int randomInt = randomGenerator.nextInt(9);
            log ("Generated : " + randomInt);
        }

        log("Done. ");  
    }

    private static void log (String aMessage) {
        System.out.println(aMessage);
    }

}

3 个答案:

答案 0 :(得分:3)

您不应该担心以随机顺序生成数字,而应该调整您的方法来改变数字。你知道你会得到数字1-9所以做这样的事情:

public ArrayList<Integer> getRandomOrderedNums(){ ArrayList<Integer> numbers = new ArrayList<Integer>(); for(Integer i = 1; i < 10; i++){ numbers.add(i); } Collections.shuffle(numbers); }

答案 1 :(得分:0)

对于第二部分,要查看数字是否重复,您可以轻松使用数据结构,例如HashSet,这是检查重复值的最有效方法。如果您对它们不满意,请告诉我。使用hashset,你可以得到一个随机数,并检查该组是否包含这个数字,如果是,请再试一次。

关于随机数,您可以randomGenerator.nextInt(9) + 1,因此它始终是1-9(包括)。

答案 2 :(得分:0)

你可能想要使用这样的函数:

public static int getRandInt(int max, int min) {
   return new Random().nextInt((max - min) + 1) + min;
}