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

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

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

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

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

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

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

 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 randomFrom(T... items) { return items[rand.nextInt(items.length)]; } } 

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

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

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

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

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

Где 1 – наименьший int сгенерированный (включительно), а 500 – самый высокий (исключительный). limit означает, что ваш stream будет иметь длину 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 .

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

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

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

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

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

Взгляните на этот вопрос:

Как генерировать случайные целые числа в определенном диапазоне в Java?

Вы хотите создать случайное число от 0 до целых чисел – 1. Затем просто получите свой int из вашего массива:

 myArray[myRandomNumber]; 

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

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

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

 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)]); } } 

Вы также можете попробовать этот подход.

 public static  E[] pickRandom_(int n,E ...item) { List copy = Arrays.asList(item); Collections.shuffle(copy); if (copy.size() > n) { return (E[]) copy.subList(0, n).toArray(); } else { return (E[]) copy.toArray(); } } 
  • Android разнородный gridview как pinterest?
  • PorterduffXfermode: очистить раздел растрового изображения
  • Как сделать PDF в Android
  • == и .equals () не работает в java
  • Неудачное обнаружение службы с использованием Bluetooth на Android
  • Как получить текущий момент в формате ISO 8601 с датой, часом и минутой?
  • использование «экземпляра» в java
  • Каков наилучший способ обмена данными между действиями?
  • Как сделать HTTPS POST с Android?
  • как переопределить кнопку панели действий в андроиде?
  • Разница между выражениями Return и Break
  • Давайте будем гением компьютера.