Подтвердить что ты не робот

Как случайным образом выбрать элемент из массива

Я ищу решение для случайного выбора числа из целочисленного массива.

Например, у меня есть массив new int[]{1,2,3}, как я могу выбрать число случайно?

4b9b3361

Ответ 1

public static int getRandom(int[] array) {
    int rnd = new Random().nextInt(array.length);
    return array[rnd];
}

Ответ 2

Генератор случайных чисел можно использовать для генерации случайного индекса и возврата элемента в этот индекс:

//initialization
Random generator = new Random();
int randomIndex = generator.nextInt(myArray.length);
return myArray[randomIndex];

Ответ 3

Если вы собираетесь получать случайный элемент несколько раз, вы хотите, чтобы ваш генератор случайных чисел был инициализирован только один раз.

import java.util.Random;

public class RandArray {
    private int[] items = new int[]{1,2,3};

    private Random rand = new Random();

    public int getRandArrayElement(){
        return items[rand.nextInt(items.length)];
    }
}

Если вы выбираете случайные элементы массива, которые должны быть непредсказуемыми, вы должны использовать java.security.SecureRandom, а не Random. Это гарантирует, что, если кто-нибудь знает последние несколько выборов, у них не будет преимущества в угадывании следующего.

Если вы хотите выбрать случайное число из массива Object с использованием дженериков, вы можете определить способ для этого (Source Avinash R в Случайный элемент из массива строк):

import java.util.Random;

public class RandArray {
    private static Random rand = new Random();

    private static <T> T randomFrom(T... items) { 
         return items[rand.nextInt(items.length)]; 
    }
}

Ответ 4

используйте java.util.Random для генерации случайного числа между 0 и длиной массива: random_number, а затем используйте случайное число для получения целого числа: array[random_number]

Ответ 5

Используйте Random класс:

int getRandomNumber(int[] arr)
{
  return arr[(new Random()).nextInt(arr.length)];
}

Ответ 6

вы также можете использовать

public static int getRandom(int[] array) {
    int rnd = (int)(Math.random()*array.length);
    return array[rnd];
}

Math.random() возвращает int между 0.0 (включительно) до 1.0 (эксклюзивно)

умножая это на array.length, вы получаете число между 0.0 (включительно) и array.length(эксклюзивное)

литье в int будет округлено, давая вам и целое число от 0 (включительно) и array.length-1 (включительно)

Ответ 7

Java имеет класс Random в пакете java.util. Используя его, вы можете сделать следующее:

Random rnd = new Random();
int randomNumberFromArray = array[rnd.nextInt(3)];

Надеюсь, это поможет!

Ответ 9

Collections.shuffle(Arrays.asList(araay_of_int));

Вышеуказанный лучший способ выполнить свою задачу.

Ответ 10

Поскольку у вас есть java 8, другое решение - использовать Stream API.

new Random().ints(1, 500).limit(500).forEach(p -> System.out.println(list[p]));

Где 1 - самый низкий int, сгенерированный (включительно), а 500 - самый высокий (исключительный). limit означает, что ваш поток будет иметь длину 500.

 int[] list = new int[] {1,2,3,4,5,6};
 new Random().ints(0, list.length).limit(10).forEach(p -> System.out.println(list[p])); 

Случайный из пакета java.util.

Ответ 11

package workouts;

import java.util.Random;

/**
 *
 * @author Muthu
 */
public class RandomGenerator {
    public static void main(String[] args) {
     for(int i=0;i<5;i++){
         rndFunc();
     } 
    }
     public static void rndFunc(){
           int[]a= new int[]{1,2,3};
           Random rnd= new Random();
           System.out.println(a[rnd.nextInt(a.length)]);
       }
}