zoukankan      html  css  js  c++  java
  • BitSet: 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来?

    package common;
    
    import java.util.ArrayList;
    import java.util.BitSet;
    import java.util.List;
    import java.util.Random;
    
    public class BitMapDemo {
    	/**
    	 * 有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来?
    	 * @author Administrator
    	 *
    	 */
    	public static void main(String[] args) {
    		Random random = new Random();
    		int bitLen = 10000000,count=0;
    		List<Integer> list = new ArrayList<>();
    		for (int i = 0; i < bitLen; i++) {
    			int randomResult = random.nextInt(bitLen);
    			list.add(randomResult);
    		}
    		if(bitLen<100){
    			System.out.println("产生的随机数有");
    			for (int i = 0; i < list.size(); i++) {
    				System.out.println(list.get(i));
    			}
    		}
    		BitSet bitSet = new BitSet(bitLen); //构造方法传入的是位数的个数
    		for (int i = 0; i < bitLen; i++) {
    			bitSet.set(list.get(i));
    		}
    		for (int i = 0; i < bitLen; i++) {
    			if (!bitSet.get(i)) {
    				//System.out.println(i);
    				count++;
    			}
    		}
    		System.out.println("0~"+bitLen+"不在上述随机数中有" + count+"个");
    		//返回bitSet实际占用的字节个数 由于bitSet基于long数组,sizeof(long) = 64 > 10 所以只需要一个long元素
    		System.out.println("bitSet size="+bitSet.size()); 
    		
    		//返回实用的long元素个数
    		System.out.println("bitSet long size="+bitSet.size()/64); 
    		
    		//返回位数的逻辑大小
    		System.out.println("bitSet length="+bitSet.length()); 
    		
    		//返回位数值为true的个数
    		System.out.println("bitSet cardinality="+bitSet.cardinality()); 
    		
    		// BitSetNotIncount = bitSet.length()-bitSet.cardinality();
    		System.out.println("count="+count+",BitSetNotIncount="+(bitSet.length()-bitSet.cardinality()));
    	}
    }
    

      

  • 相关阅读:
    SQL SERVER 全文索引分词
    Json官方介绍
    SQL Try Catch(转载http://www.cnblogs.com/jimmyray/archive/2011/08/02/2125069.html)
    SQL函数记录
    SQL事务处理代码(SQL Server 2000 & 2005)
    SQL通用分页存储过程
    [导入]SoapExtension 1.0 的问题与解决
    BugTracker.NET 汉化手札
    [导入]我对J2EE和.NET的一点理解
    PostgreSQL 8.0.2 应用报告
  • 原文地址:https://www.cnblogs.com/czsblog/p/10688419.html
Copyright © 2011-2022 走看看