如何从数组中随机选取一个元素

我正在寻找解决scheme,从整数数组中随机挑选数字。

例如我有一个数组new int[]{1,2,3} ,我怎样才能随机select一个数字?

 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。 这确保了如果有人知道最后几个select,他们将不会在猜测下一个。

如果您正在寻找使用generics从一个Object数组中select一个随机数,您可以定义一个方法来实现( 来自string数组的源Avinash R Random元素 ):

 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]

使用随机类:

 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()返回0.0(包含)到1.0(不包括)之间的整数

用array.length乘以0.0(包含)和array.length(不包括)

将转换为int将向下舍入给你和0(含)之间的整数和array.length-1(含)

看看这个问题:

如何在Java中的特定范围内生成随机整数?

你将要生成一个从0到你的整数长度的随机数 – 1.然后简单地从你的数组中得到你的int:

 myArray[myRandomNumber]; 
 Collections.shuffle(Arrays.asList(araay_of_int)); 

以上更好的方式来完成你的任务。

Java在java.util包中有一个Random类。 使用它你可以做到以下几点:

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

希望这可以帮助!

既然你有java 8,另一个解决scheme就是使用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])); 

Random是来自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)]); } }