Я ищу решение для случайного выбора числа из целочисленного массива.
Например, у меня есть массив new int[]{1,2,3}
, как я могу выбрать число случайно?
Я ищу решение для случайного выбора числа из целочисленного массива.
Например, у меня есть массив 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> T randomFrom(T... items) {
return items[rand.nextInt(items.length)];
}
}
используйте java.util.Random
для генерации случайного числа между 0 и длиной массива: random_number
, а затем используйте случайное число для получения целого числа: array[random_number]
Используйте Random класс:
int getRandomNumber(int[] arr)
{
return arr[(new Random()).nextInt(arr.length)];
}
вы также можете использовать
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 (включительно)
Java имеет класс Random в пакете java.util. Используя его, вы можете сделать следующее:
Random rnd = new Random();
int randomNumberFromArray = array[rnd.nextInt(3)];
Надеюсь, это поможет!
Взгляните на этот вопрос:
Как генерировать случайные целые числа в определенном диапазоне в Java?
Вы хотите создать случайное число от 0 до целых чисел - 1. Затем просто получите свой int из вашего массива:
myArray[myRandomNumber];
Collections.shuffle(Arrays.asList(araay_of_int));
Вышеуказанный лучший способ выполнить свою задачу.
Поскольку у вас есть 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
.
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)]);
}
}