2015-12-23 58 views
5

我想生成一个随机数来应用于某些数组,以便在每次执行中获取不同的元素。 阵列包含运动产品的名称(产品,尺寸,价格等)。通过这样做,我想制作随机的产品,这些产品将进入字符串,但在程序的每次执行中,我都会得到相同的产品。获取相同的随机数

问题在哪里?

这里是班上generaProductos代码:

public void generaProductos() { 
    int num; 
    for (int i=0;i<3;i++){ 
     num = (int) Math.random() * 3; 
     String cliente = tipoProducto[num] + " " + deporte[num] + " " + 
         destinatario[num] + " " + color[num] + " " + tallaRopaAdulto[num] 
         + " " + preciosIVA[num]; 
     System.out.println(cliente); 
    } 
    return; 
} 

而这里就是我所说的generaProductos()方法主要:

switch (opt){ 
    case 1: 
     generaProductos alm = new generaProductos(); 
     alm.generaProductos(); 

当我执行我的代码,我总是收到这样的:

Botas Futbol Hombre Marron S 16.99

的Botas FUTBOL老兄马龙小号16.99

的Botas FUTBOL老兄马龙小号16.99

(英文这将是足球鞋男子褐色大小S 16.99)

回答

10

你0之间进行转换的浮点值和图1(不包括)至int,这导致0,然后乘以3 0,它仍为0

变化

(int) Math.random() * 3 

(int) (Math.random() * 3) 
6
num = (int) Math.random() * 3; 

永远是0,由于优先顺序。

Math.random()总是< 1所以铸造int会给你0,那么你乘,仍然得到0

0

您可以使用Java的数学库来产生随机整数。如果您使用Math.random(),那么你将只在0.0到0.1

如果你想利用之间的大范围的整数的随机整数,那么你可以通过提供两个整数输入使用下面的函数,即最小&最大号获得的随机数

public static int RandInt(int max, int min){ 
    return ((int) (Math.random()*(max - min))) + min; 
} 
+0

我想你的意思是'的Math.random()'会给0和1 – user007

+0

之间的随机数是..郎包在Java中返回一个double值有正号的Math.random() ,大于或等于0.0并小于1.0 – Rish

+0

那么可能你想纠正你的答案! – user007