Chr*_*ett 156
public static int getRandom(int[] array) {
int rnd = new Random().nextInt(array.length);
return array[rnd];
}
Run Code Online (Sandbox Code Playgroud)
Luc*_*ore 11
您可以使用Random生成器生成随机索引并返回该索引处的元素:
//initialization
Random generator = new Random();
int randomIndex = generator.nextInt(myArray.length);
return myArray[randomIndex];
Run Code Online (Sandbox Code Playgroud)
借助 Java 7,人们可以使用ThreadLocalRandom.
与当前线程隔离的随机数生成器。与 Math 类使用的全局 Random 生成器类似,ThreadLocalRandom 使用内部生成的种子进行初始化,否则不得对其进行修改。如果适用,在并发程序中使用 ThreadLocalRandom 而不是共享 Random 对象通常会遇到更少的开销和争用。当多个任务(例如,每个 ForkJoinTask)在线程池中并行使用随机数时,使用 ThreadLocalRandom 特别合适。
public static int getRandomElement(int[] arr){
return arr[ThreadLocalRandom.current().nextInt(arr.length)];
}
//Example Usage:
int[] nums = {1, 2, 3, 4};
int randNum = getRandomElement(nums);
System.out.println(randNum);
Run Code Online (Sandbox Code Playgroud)
也可以编写通用版本,但它不适用于原始数组。
public static <T> T getRandomElement(T[] arr){
return arr[ThreadLocalRandom.current().nextInt(arr.length)];
}
//Example Usage:
String[] strs = {"aa", "bb", "cc"};
String randStr = getRandomElement(strs);
System.out.println(randStr);
Run Code Online (Sandbox Code Playgroud)
如果您要多次获取随机元素,则需要确保您的随机数生成器仅初始化一次.
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)];
}
}
Run Code Online (Sandbox Code Playgroud)
如果要选择需要不可预测的随机数组元素,则应使用java.security.SecureRandom而不是Random.这确保了如果有人知道最后几个选秀权,他们将无法猜测下一个选秀权.
如果你正在寻找接从使用泛型对象数组随机数,可以定义为(来源这么做的方法阿维纳什- [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)];
}
}
Run Code Online (Sandbox Code Playgroud)
使用随机类:
int getRandomNumber(int[] arr)
{
return arr[(new Random()).nextInt(arr.length)];
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用
public static int getRandom(int[] array) {
int rnd = (int)(Math.random()*array.length);
return array[rnd];
}
Run Code Online (Sandbox Code Playgroud)
Math.random()返回介于(包含)到(不包含)double之间的值0.01.0
将此乘以array.length得出介于(包含)和(不包含)double之间的值0.0array.length
转换为将向下舍入,为您提供(含)和(含)int之间的整数0array.length-1
| 归档时间: |
|
| 查看次数: |
192861 次 |
| 最近记录: |