我有一个包含许多元素的String数组(因为我还没有完成应用程序,我不知道确切的数字),也许大约200.我想得到这个数组的20个随机元素,但是确定每个随机元素只出现一次,比如,我不想让这20个元素中的第5个元素(例如)两次。我怎么能这样做?
答案 0 :(得分:1)
我认为它是Java 如果这是对的,你可以做类似的事情:
public void getRandomElementsOfArray(String[] array)
{
int maxLength = 200; // Insert length of your array
int[] usedRandoms;
String[] randomElements = String[20];
int random = new Random().nextInt();
for(int i = 0; i<21; i++) // Loops are NOT my strongest point. you'd better check this
{
while(random > maxLength || random < 0 || !Arrays.asList(usedRandoms).contains(random)) // Loop while random is smaller then 0 (the smallest index) or bigger then the length of your array or already used
{
random = new Random();
}
randomElements[i] = array[random];
usedRandoms[i] = random;
}
}
答案 1 :(得分:0)
我建议你遵循相当直接的策略。您需要一个已经选择的set元素 - 在您的情况下,HashSet可能是合适的,给定字符串数组大小X:
答案 2 :(得分:0)
找到下面的代码生成随机数
/** Generate 10 random integers in the range 0..99. */
public final class RandomInteger {
public static final void main(String... aArgs){
log("Generating 10 random integers in range 0..99.");
//note a single Random object is reused here
Random randomGenerator = new Random();
for (int idx = 1; idx <= 10; ++idx){
int randomInt = randomGenerator.nextInt(100);
log("Generated : " + randomInt);
}
log("Done.");
}
private static void log(String aMessage){
System.out.println(aMessage);
}
}