随机子集的Java实现

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错
  获取一个集合中指定个数的随机子集(元素不重复)的实现。

  package com.lavasoft.randomset;

  import java.util.*;

  /**

  * 数学集合概念上的随机子集的Java实现研究代码

  *

  * @author leizhimin 2010-5-17 13:25:52

  */

  public class RundomSubsetToolkit {

  public static void main(String[] args) {

  //                int[] rs = randomSubset(1, 5000, 300);

  //                for (int r : rs) {

  //                        System.out.println(r);

  //                }

  //                List list = new ArrayList(10);

  //                list.add(“a”);

  //                list.add(“b”);

  //                list.add(“c”);

  //                list.add(“d”);

  //                list.add(“e”);

  //                list.add(“f”);

  //                list.add(“g”);

  //                list.add(“h”);

  //                list.add(“i”);

  //                list.add(“j”);

  //                List rs1 = randomSubset(list, 5);

  //                for (Object o : rs1) {

  //                        System.out.println(o);

  //                }

  //

  int[] array = {7, 9, 2, 8, 6, 4, 3};

  int[] rs3 = randomSubset(array, 4);

  for (int i : rs3) {

  System.out.println(i);

  }

  Map map = new HashMap();

  }

  /**

  * 获取某个范围内指定个数的随机自然数子集

  *

  * @param beginIndex 取之范围起

  * @param endIndex     取之范围止

  * @param subCount     子集元素数目

  * @return 自然数子集

  */

  public static int[] randomSubset(final int beginIndex, final int endIndex, final int subCount) {

  if (beginIndex < 0 || endIndex < 1 || subCount < 0 || endIndex – beginIndex < subCount) {

  throw new RuntimeException(“获取随机子集的参数不合逻辑!”);

  }

  int[] rs = new int[subCount];

  int rescount = endIndex – beginIndex + 1;

  int[] scope = new int[rescount];

  for (int i = beginIndex; i <= endIndex; i++)

  scope[i – beginIndex] = i;

  Random random = new Random();

  for (int i = 0, odd = rescount – 1; i < subCount; i++, odd–) {

  int ranindex = r

未经允许不得转载:演道网 » 随机子集的Java实现

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册