java怎么从数组a中随机选取几个数放入数组b中,急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么从数组a中随机选取几个数放入数组b中,急相关的知识,希望对你有一定的参考价值。

比如数组a0,1,2,3,4,5,6,7,8,9,中随机选几个数(数字随机,个数不等),比如1,2,3或1,2,3,4,5这样,高手求救

这是取随机数import java.util.Random;
public class vder
public static void main(String[] args)
int a[]=1,2,3,4,5,6,7,8,9,0;
boolean r[]=new boolean[a.length];
Random random = new Random();
int m = 5; //要随机取的元素个数
if(m > a.length || m < 0)
return;
int n = 0;
while(true)

int temp = random.nextInt(10);
if(!r[temp])

if(n == m) //取到足量随机数后退出循环
break;
n ++;
System.out.println("得到的第" + n +"个随机数为:" + temp);
r[temp ] = true; //这里将temp赋值给数组,就不用我贴出代码来了啊



参考技术A 我好久没写代码了 我就告诉你一下思路吧,首先数组的长度 a.length 可以取不等的个数 Math.random(0,a.length);再取随机的几个数 for(int i = 0; i < a.length; i++) System.out.println(a[a.length]); 这样可能会出现重复的 你也可以加个判断什么的。 参考技术B public class checkoutFromList

public static void main(String args[])
int a[] = 0,1,2,3,4,5,6,7,8,9;
// 取出次数
int checkOutCount = (int)(Math.random()*10);
// 第几位取出
int checkOutIndex;
for (int i = 0;i < checkOutCount;i++)
checkOutIndex = (int)(Math.random()*10);
System.out.println(a[checkOutIndex]);


参考技术C void addSomeNumber(int[] a)

Random rd = new Random(System.currentTimeMillis());
int idx = rd.nextInt(a.length);
if(idx == 0)
return a[0];
List list = new ArrayList<Integer>();
for(int i = 0; i < idx; i++) // 个数随机


// 随机一个数组

int tmpIdx = rd.nextInt(a.length);

// 去重复

while( list.contains(tmpIdx) )
tmpIdx = rd.nextInt(a.length);

list.add(tmpIdx);

System.out.prinln( a[tmpIdx] ); // 数字随机


参考技术D int m = (int)Math.random()*10;
for(int i=0;i<m;i++)
int n = (int)Math.random()*10;
sysou.println(a[n]);

自己手动敲的哈,应该能看懂把。

Java:一次从数组中选择几个不同的随机数

【中文标题】Java:一次从数组中选择几个不同的随机数【英文标题】:Java: pick several different random numbers from array in one time 【发布时间】:2011-12-07 02:33:01 【问题描述】:

谁能告诉我如何一次从一个数组中挑选几个不同的随机数? 例如,有一个 long int 数组。我想从中挑选7个数字。所有数字不能相同,并按递增顺序排序。

Random random = new Random();
int a = mixColor[random.nextInt(mixColor.length)];
int b = mixCoor[random.nextInt(mixCoor.length)];
int c = mixCoor[random.nextInt(mixCoor.length)];
int d = mixCoor[random.nextInt(mixCoor.length)];
int e = mixCoor[random.nextInt(mixCoor.length)];
while(b!=c && c!=d && b!=d) 
   b = mixCoor[random.nextInt(mixCoor.length)];
   c = mixCoor[random.nextInt(mixCoor.length)];
   d = mixCoor[random.nextInt(mixCoor.length)];

mixColor[]mixCoor[] 是长整型数组。我可以这样做,但是如果我想选择更多的数字,这将非常复杂。我还需要对它们进行排序。有人有好主意吗?

【问题讨论】:

根据您的收藏有多大,您可以使用随机播放,然后根据需要选择前几个元素。您可能想要对此进行基准测试 - 您的集合可能足够大,并且 shuffle 可能会很慢,这会取消您从中获得的简单性。这是shuffle 的规范 更好的方法是使用Random 编号生成并查看选择的列表是否已经在生成的索引处具有编号。然后使用Collections 进行排序 【参考方案1】:

试试这个方法:

public static int[] pickNRandom(int[] array, int n) 

    List<Integer> list = new ArrayList<Integer>(array.length);
    for (int i : array)
        list.add(i);
    Collections.shuffle(list);

    int[] answer = new int[n];
    for (int i = 0; i < n; i++)
        answer[i] = list.get(i);
    Arrays.sort(answer);

    return answer;


像这样使用它:

int[] mixColor = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0;
int[] randomPicks = pickNRandom(mixColor, 5);

该方法保证完全随机选择n 元素,并且它们将按排序返回。它还保证不会多次选择任何元素,并且结果数组不会有重复,只要输入数组是无重复的。

上面的代码可以正常工作,但是必须在intInteger 之间来回切换很麻烦,而且如果输入数组很大(例如,> 100.000 个元素),它可能会很慢。先测试一下,看看它是否符合您的需求。

【讨论】:

【参考方案2】:
Random gen = new Random();
int max = mixCoor.length; // Maximum Random value to generate

ArrayList<Integer> picked = new ArrayList<Integer>(); // List of picked numbers

for(int i = 0; i < numToBePicked; i++) 
  int index = gen.nextInt(max);
  if(!picked.contains(mixCoor[index]) // If the number isn't already picked
    picked.add(mixCoor[index]); // Add it to the "picked" list


Collections.sort(picked); // Sort the picked numbers into ascending order

【讨论】:

【参考方案3】:

您可以使用现有的 java API 做任何您想做的事情:

public static Integer[] pickRandom(Integer[] array, int number) 
    List<Integer> list = new ArrayList<Integer>(Arrays.asList(array));
    Collections.shuffle(list);
    list = list.subList(0, number);
    Collections.sort(list);
    return list.toArray(new Integer[number]);

注意:您需要使用 Integer[] 而不是 int[] 来调用它,因此您必须自己转换它。此外,虽然在代码大小和复杂性方面“高效”,但这在性能方面并不是那么高效(尽管它可能仍然可用)。如果您以 List&lt;Integer&gt; 开头,则此代码会更简单。

【讨论】:

【参考方案4】:
Random random  new Random();
for (int i=0;i<7;i++)
int a = mixColor[random.nextInt()%mixColor.length];

当然,您可以使用随机种子并获得更多随机数

【讨论】:

这个答案缺少 OP 要求的几件事:不能重复随机数和排序。请参阅上面乔恩的回答。

以上是关于java怎么从数组a中随机选取几个数放入数组b中,急的主要内容,如果未能解决你的问题,请参考以下文章

JAVA从数组中选取N个数,使其和为M实现算法?

如何从已经规定的数组中随机取出一个元素?

java中怎样在一个集合中随机取一个数?

java中怎么取两个数组中不相同的数据?

PHP中怎么从一个二维数组中随机取出一个值?

[JAVA] - 高效的从 m 个元素中随机选中 n 个