Java Random不断吐出相同的数字

Java Random不断吐出相同的数字,java,Java,我目前正在为我正在开发的一个小游戏制作一个简单的2D世界生成器。问题是我从随机数据中得到的值都是一样的。另外,我不希望生成器创建两个区块高的区块,因为这样玩家就无法通过。这是我的密码: private void generateWorld() { Random r = new Random(Sys.getTime() / System.currentTimeMillis() * System.nanoTime()); int bh = r. nextInt(1) + 1;

我目前正在为我正在开发的一个小游戏制作一个简单的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);
    }
}
private void generateWorld(){
Random r=new Random(Sys.getTime()/System.currentTimeMillis()*System.nanoTime());
int bh=r.nextInt(1)+1;
对于(int x=0;x
编辑:
r.nextInt(2)还创建了一条平坦的地带。

EDIT2:修复了它,我很愚蠢,只是在for循环之前更改了r.nextInt()。忘了里面的那个

r.nextInt(1)
将始终返回
0
。根据经验法则,
r.nextInt(x)
返回一个介于
0到x-1之间的整数

正如@Blender指出的,问题是nextInt(1)将返回一个在[0,1]范围内的值,该范围始终为0

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

nextInt(x)
返回一个介于0和
x-1之间的随机整数。因此
nextInt(1)
返回一个介于0和…0之间的整数

请尝试使用
nextInt(2)

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

nextInt(maxInt)
将int从
0
返回到
maxInt-1

nextInt(1)
替换为类似
nextInt(100)

的内容不会
r.nextInt(1)
每次都返回
0
?您阅读过nextInt的文档吗?更一般地说,是r.nextInt(n)返回一个至少为0且小于n的int。只有一个int至少为0且小于1。也许您应该使用r.nextInt(2)。@PatriciaShanahan I将其更改为
r.nextInt(2)
,仍然创建一条平坦的地带。然后,玩家将无法通过。@JustinP:通过什么?为什么玩家能够通过区块?