2015-04-15 6 views
1

Итак, я сделал re 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;} 
+1

Почему бы не использовать [java.Util.Random # nextInt()] (https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt-int-)? – GriffeyDog

+0

Это не должно вызывать исключение OutOfBoundsException. – user4759923

+0

Не получилось, что OutOfBoundsException исходит из метода печати, который я должен был напечатать. – theUser

ответ

7

х между 0 и 1.

для того, чтобы быть е между low и high, вам необходимо:

e=(high-low)*x+low; 
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; 
} 
0

Использовать return (int) (Math.random()*(high-low)+low); как ваше тело функции.

+0

Когда я использую это, я просто получаю исключение за пределы исключения – theUser

Смежные вопросы