概率類的大資料問題

2021-10-01 13:43:26 字數 740 閱讀 4128

概率類的大資料問題,本質上是概率問題而不是大資料問題。這類問題中最常出現的則是如何在資料流中等概率的取出 m 個元素。這個問題有標準解法的,知道就知道,不知道一般也很難想到。記住就好。

問題描述:給你乙個 google 搜尋日誌記錄,存有上億挑搜尋記錄(query)。這些搜尋記錄包含不同的語言。隨機挑選出其中的 100 萬條中文搜尋記錄。假設判斷一條 query 是不是中文的工具已經寫好了。

假設你一共要挑選 n 個 queries,設定乙個 n 的 buffer,用於存放你選中的 queries。對於每一條飛馳而過的query,按照如下步驟執行你的演算法:

1.如果非中文,直接跳過

2.如果 buffer 不滿,將這條 query 直接加入 buffer 中

3.如果 buffer 滿了,假設當前一共出了過 m 條中文 queries,用乙個隨機函式,以 n / m 的概率來決定這條 query 是否能被選中留下。

為了簡化證明過程,我們用 5 條 queries 裡挑 3 條來作為例子證明每條 query 被挑中的概率都是 3/5。

問題描述

amazon: 乙個檔案中有很多行,不能全部放到記憶體中,如何等概率的隨機挑出其中的一行?[題目**](

問題解答

先將第一行設為候選的被選中的那一行,然後一行一行的掃瞄檔案。假如現在是第 k 行,那麼第 k 行被選中踢掉現在的候選行成為新的候選行的概率為 1/k。用乙個隨機函式看一下是否命中這個概率即可。命中了,就替換掉現在的候選行然後繼續,沒有命中就繼續看下一行

大資料問題

在學習c語言階段,大家肯定都寫過這樣的乙個程式 求乙個數的階乘。細心的同學,可能在編碼的時候,會注意這個數的情況 如果給定資料過大,階乘的結果可能會溢位 關於比較大的數的階乘,我們就會採取別的辦法 關於具體的 之後的文章將會為大家分享 再如,學習堆的時候,我們遇到這樣的問題 n個資料中求取最大的前k...

大資料問題

一般解決大資料問題有兩個思路 1 先將與這道題相關的所有的資料結構進行使用一遍,如果有合適的就直接進行使用 2 如果不能直接使用,一般就要進行雜湊切分,然後再使用合適的資料結構進行問題的解決 雜湊切分 1 先估算出要切分的大小 2 然後使用雜湊的除留餘數法進行各個資料的映 問題 1 給乙個超過100...

大資料 「資料傾斜」的問題

解決資料傾斜的辦法,前輩已經寫得非常完整了,我這裡就直接搬磚吧 建議先看這個鏈結文章,非常好 下面是自己的總結 什麼是資料傾斜?見下圖 簡單來說資料傾斜就是資料的key 的分化嚴重不均,造成一部分資料很多,一部分資料很少的局面。舉個 word count 的入門例子 它的map 階段就是形成 aaa...