得到相同的随机数

Jav*_*r.S 5 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;
 }
Run Code Online (Sandbox Code Playgroud)

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

switch (opt){
    case 1:
        generaProductos alm = new generaProductos();
        alm.generaProductos();
Run Code Online (Sandbox Code Playgroud)

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

Botas Futbol Hombre Marron S 16.99

Botas Futbol Hombre Marron S 16.99

Botas Futbol Hombre Marron S 16.99

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

Era*_*ran 10

您将浮点值在0和1(不包括)之间转换int为0,然后将0乘以3,它仍为0.

更改

(int) Math.random() * 3
Run Code Online (Sandbox Code Playgroud)

(int) (Math.random() * 3)
Run Code Online (Sandbox Code Playgroud)


zub*_*rgu 6

num = (int) Math.random() * 3;
Run Code Online (Sandbox Code Playgroud)

将永远是0,因为优先顺序.

Math.random()总是< 1如此施展它int会给你0,然后你成倍,仍然得到0.