2014-09-28 75 views
-1

我使用这个随机数发生器,它工作正常,但我需要一个范围(例如16-20)的数字,但我无法让它工作。我不知道该怎么做。使用随机数发生器和循环的代码

for (int i = 1; i <= 1; i++) { 
    int RandomAttack = (int) Math.random() * 20; 
    System.out.println(RandomAttack); 
} 

我需要最简单的代码。

+0

'的for(int i = 1; I <= 1;我++)'?只需一次迭代就可以完成循环的重点是什么?你想做什么? – 2014-09-28 13:41:39

+0

你的意思是'int RandomAttack = 16 +(int)(Math.random()* 5);' – 2014-09-28 13:42:04

+0

如果你将有一个循环和1个独特的迭代,那么你可以删除循环 – 2014-09-28 13:44:41

回答

1

的Math.random()将只在范围0..1返回号码。您可以通过按范围进行多重缩放并添加最小值来缩放。

或使用java.util.Random(),这有一个方便的方法nextInt()它将返回0和<值之间。

所以你需要去0 < =值< 5为具有值0,1,2,3,4

import java.util.Random; 

public class RandomTest { 

    public static void main(String[] args) { 
     Random random = new Random(); 
     for (int i = 1; i <= 10; i++) { 
      int value = 16 + random.nextInt(5); 
      System.out.println(value); 
     } 
    } 

} 
1

请确保您有您的随机进口的初始化,Random random = new Random();

如下:

int randomNumber = random.nextInt(max - min) + min; 

在你的情况

int randomNumber = random.nextInt(20 - 16) + min; 

这本身就应该让你在范围内所需的值。不要忘记在你的课堂上导入Java的Random类。

此外,我不太了解你那里的循环点。我错过了一些明显的东西,还是只是一个迭代?


这里是一个类例如:

import java.util.Random; 

public class RandomRange { 
    private static Random random; 

    public static void main(String[] args) { 
     random = new Random(); 

     System.out.println(random.nextInt(20 - 16) + 16); 
    } 
} 
+0

是的。实际上它只是一次迭代,因为如果它在游戏中,它应该就像是生命值。 – 2014-09-28 13:45:23

+0

如果它是基本的Java,那么我建议只学习基础知识。创建游戏时,你必须考虑很多事情。 – Juxhin 2014-09-28 13:46:36

+0

另外,不要让'static'在我的变量初始化中吓到你,'Random'对象可以简单地在主方法中初始化 – Juxhin 2014-09-28 13:47:26