得到相同的随机数

时间:2015-12-23 13:10:36

标签: java random

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

问题出在哪里?

以下是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;
 }

这是我在main中调用generaProductos()方法的地方:

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

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

  

Botas Futbol Hombre Marron S 16.99

     

Botas Futbol Hombre Marron S 16.99

     

Botas Futbol Hombre Marron S 16.99

(在英语中,它将是足球靴男子棕色尺码S 16.99)

3 个答案:

答案 0 :(得分:10)

将0到1(不包括)之间的浮点值转换为(int) Math.random() * 3 ,结果为0,然后将0乘以3,即0。

变化

(int) (Math.random() * 3)

UTF-8

答案 1 :(得分:6)

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

将始终为0,因为优先顺序。

Math.random()始终为< 1,因此将其投放到int会给你0,然后你加倍,仍然会得到0。

答案 2 :(得分:0)

您可以使用java的Math库生成随机整数。如果您使用 Math.random() ,那么您将获得仅在0.0到0.1之间的随机数

如果你想在大范围的整数之间取随机整数,你可以通过提供两个整数输入来使用以下函数,即Min&amp;最大号码

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