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