問題
包含n個0、1元素的A數組是否全部爲0?
算法步驟
1.在A中隨機獨立抽取s=2/ε個元素
2.檢查抽樣是否包含1
代碼
Java
import java.util.*;
public class AllZero {
public static void main(String[] args) {
int n = 10;
double epsilon = 0.5;
int s = (int)(2/epsilon);
int[] array = new int[n];
//隨機生成s個索引
Set<Integer> indexs = new HashSet<>();
Random random = new Random();
while (indexs.size()<s) indexs.add(random.nextInt(array.length));
System.out.println(indexs);
//取出s個元素存入樣本數組
List<Integer> samples = new ArrayList<>();
indexs.forEach(index -> samples.add(array[index]));
System.out.println(samples);
//判斷數組是否包含0
System.out.println(samples.contains(1));
}
}
Scala
import scala.util.Random
import scala.collection.mutable.{ArrayBuffer, Set}
object AllZero2 {
def main(args: Array[String]): Unit = {
val epsilon = 0.5
val s = 2/epsilon
val n = 10
val array = Array.fill(n)(0)
val indexs:Set[Int] = Set()
while(indexs.size<s) indexs += Random.nextInt(array.length)
val samples:ArrayBuffer[Int] = ArrayBuffer()
indexs.foreach(index=>samples += array(index))
samples.foreach(println)
}
}
Python
import random
epsilon = 0.5
s = 2 / epsilon
n = 10
array = [0 for i in range(1, n)]
indexs = set()
while len(indexs) < s: indexs.add(random.randint(0, len(array)-1))
samples = [array[index] for index in indexs]
print(samples)