随机不断吐出相同的数字

时间:2013-03-16 03:06:43

标签: java

我正在努力为我正在制作的小型游戏制作一个简单的2D世界生成器。问题是我从随机获得的值都是相同的。另外,我不希望生成器创建两个块高的块,因为那时玩家无法通过。这是我的代码:

private void generateWorld() {
    Random r = new Random(Sys.getTime() / System.currentTimeMillis() * System.nanoTime());
    int bh = r. nextInt(1) + 1;
    for(int x = 0; x < width; x+=32) {

        theWorld.addBlock(new Block(BlockType.Grass, x, bh * 32));
        //r = new Random(Sys.getTime() / System.currentTimeMillis() * System.nanoTime());
        bh = r.nextInt(1) + 1;
        System.out.println(bh);
    }
}

编辑:r.nextInt(2);也创造了一片扁平的土地。 编辑2:修复它,我是愚蠢的,只是在for循环之前更改r.nextInt()。忘了它里面的一个!

5 个答案:

答案 0 :(得分:1)

r.nextInt(1)将始终返回0。根据经验,r.nextInt(x)会返回0 to x-1范围内的整数。

答案 1 :(得分:0)

问题正如@Blender所指出的那样,nextInt(1)将返回[0,1]范围内的值,该值始终为0.

增加传入的n值以创建更大的块。

答案 2 :(得分:0)

nextInt(x)返回0到x-1之间的随机整数。所以nextInt(1)返回0到... 0之间的整数。

请尝试nextInt(2)

答案 3 :(得分:0)

nextInt(1) - 将始终返回0,原因是该参数是随机选择的上限。尝试提高参数值。

答案 4 :(得分:0)

nextInt(maxInt)会返回0maxInt - 1的int。 将nextInt(1)替换为nextint(100)