如何从给定元素的数组生成随机int?

时间:2014-11-02 02:30:10

标签: java arrays

我在从数组生成随机int时遇到问题。 在某些情况下,输出是int,但不是此数组的元素。

public static int array1[] = new int [] {0,3,6,9,12,15,18,21,24,27,30,33,36};
public static int rand;

public static int random()
{
    int max = array1[12];
    int min = array1[0];
    rand = (int) Math.floor(Math.random()*(max - min)+1);
    return rand;
}

我做错了什么?

3 个答案:

答案 0 :(得分:3)

您当前的算法正在计算数组中第一个和最后一个元素之间的随机数。

您应该从数组中检索随机元素。要做到这一点,最好生成一个介于0和数组长度之间的随机数(独占),然后返回该索引处的元素。

答案 1 :(得分:0)

不是从数组中最大和最小元素定义的范围生成随机元素,而是生成[0..12]范围内的随机元素。

换句话说,在数组中选择一个随机的索引

答案 2 :(得分:0)

最好在0和数组的独占上限之间创建一个随机int。然后你可以使用随机数作为数组索引,随机值将始终是提供的值之一。

就目前而言,你并没有真正使用数组 - 你所做的只是使用第一个和最后一个索引来建立random int的包含下限和独占上限,结果将是其间的任何int