一个元素大小就够了
从第一个开始扫描
到第i个元素时,以1/i的概率保留第i个元素
可以保证每个元素被保留的概率都相等
上测试代码
public static void main(String []args) throws Exception{
int size = 200;
int []result = new int[size];
for(int i = 0;i<result.length;i++){
result[i] = 0;
}
int index;
for(int j=0;j<2000000;j++){
index = MainClass.getResult(size);
result[index]++;
}
System.out.println(Arrays.toString(result));
}
public static int getResult(int size){
int result = 0;
for(int i=0;i<size;i++){
if(Math.random()>(((i+0.0))/(i+1))){
result = i;
}
}
return result;
}