所以,我确实做了e=(high-low)*x+low
,但是,当我尝试使用它时,它只返回一个outOfBounds异常。当我没有将它转换为int时,它可以工作,但是我需要它返回一个整数,以使数组工作。
public static int randomInt(int low, int high)
{double e;
double x=Math.random();
e=(high-low)*x+low;
return (int)e;}
这是调用" randomInt"的方法。方法
public static int[] randomIntArray(int n)//generates an array of random numbers based on an upper and lower bound
{int[] a=new int[n];
for(int i=0;i<a.length;i++)
{a[i]=randomInt(-5,15);}//"-5&15 are the lower and upper bounds of the random number array
return a;}
答案 0 :(得分:7)
x介于0和1之间。
为了使e在low
和high
之间,您需要:
e=(high-low)*x+low;
答案 1 :(得分:2)
检查this
public static int randInt(int min, int max) {
Random rand = new Random();
// nextInt is normally exclusive of the top value,
// so add 1 to make it inclusive
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
答案 2 :(得分:0)
使用return (int) (Math.random()*(high-low)+low);
作为您的功能体。