如何获得0~600的随机值,间隔为10?

时间:2013-12-10 21:14:32

标签: java random

我有一个600x600的屏幕,我想基本划分它每10个方格,所以我可以做一个蛇游戏,所以我需要为这些部门产生食物。

我想到的代码:

x.nextInt(10)*x.nextInt(6)*x.nextInt(10)

这不起作用,即使它有效,也有多个值可以达到20,比如1 * 2 * 10,2 * 1 * 10 ......

所以我也想到了这个:

(int)(x.nextInt(600)/10)*10

但它不会使间隔为10 ......

我也想到了这个:

Integer.parseInt(Double.toString(x.nextInt(600)/10))*10

但它非常愚蠢而且不起作用(给出错误)

如果你不理解我想要的东西,这里有结果: 随机对(x和y): 10,60 420,170 550,480 80,600

这是我不想要的: 14,52 88,19 551,529 415,550

如何管理使用此间隔制作随机的逻辑?

4 个答案:

答案 0 :(得分:5)

你可以尝试:

(int)(Math.random() * 60) * 10

基本上,这会在0到59之间找到一个随机int,然后将它乘以10,这样数字的间隙就为10 ...

另外,您可以利用整数除法并使用

(int)(Math.random() * 600) / 10 * 10

的工作原理相同。

答案 1 :(得分:2)

你可以通过生成一个0到60之间的整数来解决这个问题(或者我猜你真的想要0到59,因为一个平铺是10像素宽,应该在屏幕上),然后将整数乘以10。

答案 2 :(得分:2)

您应该使用Math.random()

 int random = (int )(Math.random() * 60 +1) * 10;

描述: random()方法返回介于0.0和0.999之间的随机数。所以,你将它乘以60,所以上限变为0.0到59.999,当你加1时,它变为1.0到60.999,现在当你截断到int时,你得到1到60.然后乘以10得到一个10到10之间的10的倍数。

注意:如果你想从0到60删除1并使用

 int random = (int )(Math.random() * 61) * 10;

答案 3 :(得分:0)

有一个GridSquare类,坐标从0到10(随机选择),然后使用toScreenArea函数将坐标乘以每平方的像素数,以在屏幕上找到适当的点以放置正方形。