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)
首先,你写道:
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号空间) - 除非梯形码用梯子覆盖它.
希望有所帮助.
祝好运!
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |