滑槽和梯子游戏随机放置问题

pas*_*ear 3 java random methods

我是一名学生,正在做一个Chutes and Ladders游戏.我正在使用方法来确定应该在游戏板上放置多少个滑槽和梯子.我在主要使用参数中为每个指定10,但我总是从6到11位置全面放置.

这两种方法是否会相互干扰?

或者我为随机放置设置for循环的方式有问题吗?

我是这个网站的新手,如果您需要更多说明,请告诉我,我不想将整个程序放在这里.谢谢.

//main
                  ChutesAndLadders cl = new ChutesAndLadders();
                  cl.setBoard(new String[100]);
                  cl.makeChutes(10);
                  cl.makeLadders(10);

//methods
            public String [] board;
            private int chutes, ladders;
            public int position;
            public Random rand = new Random();


        //set board
                    public void setBoard(String [] n){
                        board = n;
                        for(int i = 0; i < board.length; i++)
                            board[i] = "   ";
                    }
        //set and place chutes
                    public void makeChutes(int n){
                        chutes = n;
                        for(int i = 0; i <= chutes; i++)                    
                            board[rand.nextInt(board.length)] = "C" + chutes;

                    }
        //set and place ladders
                    public void makeLadders(int n){
                        ladders = n;
                            int lcell = 0; 
                        for(int i = 0; i <= ladders; i++)
                                 board[rand.nextInt(board.length)] = "L" + ladders;
Run Code Online (Sandbox Code Playgroud)

Pau*_*ury 6

首先,你写道:

for(int i = 0; i <= chutes; i++)                    
    board[rand.nextInt(board.length)] = "C" + chutes;
Run Code Online (Sandbox Code Playgroud)

循环中的赋值语句将运行chutes + 1次.(在你的情况下十一次.)[ i < chutes改用.]这在你的梯子代码中是一样的.这解释了为什么在代码运行完毕后最多可能有11个滑槽或梯子.

其次,您不必小心防止同一空间被多次分配滑槽或梯子. rand.nextInt(board.length)不保证每次运行时都会生成唯一值(否则它实际上不是随机的.)这就解释了为什么在代码运行完成后你可能看不到多达11个滑槽和梯子.

为了使这更清楚,在那里放一个恒定的值:

for(int i = 0; i < chutes; i++)                    
    board[11] = "C" + chutes;
Run Code Online (Sandbox Code Playgroud)

并注意到你最终得到一个滑槽(在11号空间) - 除非梯形码用梯子覆盖它.

希望有所帮助.

祝好运!