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