大數據算法學習筆記(3)-全0數組判定

問題

包含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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章