我在从数组生成随机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;
}
我做错了什么?
答案 0 :(得分:3)
您当前的算法正在计算数组中第一个和最后一个元素之间的随机数。
您应该从数组中检索随机元素。要做到这一点,最好生成一个介于0和数组长度之间的随机数(独占),然后返回该索引处的元素。
答案 1 :(得分:0)
不是从数组中最大和最小元素定义的范围生成随机元素,而是生成[0..12]
范围内的随机元素。
换句话说,在数组中选择一个随机的索引
答案 2 :(得分:0)
最好在0和数组的独占上限之间创建一个随机int。然后你可以使用随机数作为数组索引,随机值将始终是提供的值之一。
就目前而言,你并没有真正使用数组 - 你所做的只是使用第一个和最后一个索引来建立random int的包含下限和独占上限,结果将是其间的任何int