如何从数组中随机选取一个元素
我正在寻找解决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)]); } }