成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

忘我之乘積;及蓄水池抽樣精妙解法

開發(fā) 項目管理
給你一個數(shù)組A[1..n],請你在O(n)的時間里構造一個新的數(shù)組B[1..n],使得B[i]=A[1]*A[2]*...*A[n]/A[i]。你不能使用除法運算。蓄水池抽樣(Reservoir Sampling)問題分析

今日面試題:忘我之乘積

給你一個數(shù)組A[1..n],請你在O(n)的時間里構造一個新的數(shù)組B[1..n],使得B[i]=A[1]*A[2]*...*A[n]/A[i]。你不能使用除法運算。

蓄水池抽樣(Reservoir Sampling)問題分析

問題:

要求從N個元素中隨機的抽取k個元素,其中N無法確定。

這種應用的場景一般是數(shù)據(jù)流的情況下,由于數(shù)據(jù)只能被讀取一次,而且數(shù)據(jù)量很大,并不能全部保存,因此數(shù)據(jù)量N是無法在抽樣開始時確定的;但又要保持隨機性,于是有了這個問題。所以搜索網(wǎng)站有時候會問這樣的問題。

這里的核心問題就是“隨機”,怎么才能是隨機的抽取元素呢?我們設想,買彩票的時候,由于所有彩票的中獎概率都是一樣的,所以我們才是“隨機的”買彩票。那么要使抽取數(shù)據(jù)也隨機,必須使每一個數(shù)據(jù)被抽樣出來的概率都一樣。

分析:

由于N無法確定,數(shù)據(jù)只能讀取一次,并且要求隨機,就是每個元素抽出的概率一樣,都是k/N

面試的時候,經(jīng)常會在紙上通過一個小的例子來找到好的解決方案。比如先讓你從100個元素中等概率抽取出10個元素。后來又向集合中添加了20個元素,變成了120個元素等概率抽取10個,怎么樣才能隨著N的動態(tài)改變而讓N無論等于多少時這N個元素都等概率被抽取呢?

解法一:最小k個指紋

找到一個哈希函數(shù)能產生隨機數(shù),同時用一個k個元素的堆用來保存最小的k個元素。那么過一遍所有的元素,計算每個的哈希值,通過堆來選擇k個元素。

這個算法看起來很精妙,會有什么問題嗎?(思考)

解法二:數(shù)學計算

先選中前k個, 從第k+1個元素到最后一個元素為止, 以1/i  (i=k+1, k+2,...,N) 的概率選中第i個元素, 并且隨機替換掉一個原先選中的元素, 這樣遍歷一次得到k個元素, 可以保證完全隨機選取。

看來簡單的算法,怎么能確保每個元素被選中的概率是k/N?

任意元素G在i輪留下來的概率:

  1. P(G留下) = P(G已經(jīng)存在) * P(G沒有被替換)   
  2.          = P(G已經(jīng)存在) * (1 - P(G被替換))   
  3.          = P(G已經(jīng)存在) * (1 - P(第i個元素要替換某個元素) * P(某個元素是G))   
  4.          = (k/i) * (1 - (k/(i+1)) * (1/k))   
  5.          = (k/i) * (1 - (1/(i+1)))   
  6.          = (k/i) * (i/(i+1))   
  7.          = (k/(i+1))   

證畢!

這個題有很多的變種,比如,

給你一個長度為N的鏈表。N很大,但你不知道N有多大。你的任務是從這N個元素中隨機取出k個元素。你只能遍歷這個鏈表一次。你的算法必須保證取出的元素恰好有k個,且它們是完全隨機的(出現(xiàn)概率均等)。

從一個不知長度的文件中隨機抽出k行。

從實時的搜索詞中隨機抽出k個詞。

原文鏈接:http://www.ituring.com.cn/article/49301

責任編輯:陳四芳 來源: 圖靈社區(qū)
相關推薦

2013-10-16 15:50:20

Google面試題

2013-10-16 15:57:39

數(shù)組二叉樹

2011-01-05 10:32:58

企業(yè)數(shù)據(jù)中心運維管理北塔

2023-12-25 14:44:52

Java數(shù)組

2022-12-28 16:47:06

ICT

2011-09-09 10:10:13

SQL數(shù)據(jù)庫點滴

2017-10-16 10:42:27

前端JavaScript浮點數(shù)

2021-04-20 14:15:42

人工智能機器學習

2009-07-02 14:59:28

Java考研試題

2010-06-13 11:05:52

2020-10-09 12:41:04

算法優(yōu)化場景

2011-05-24 13:33:45

2024-08-14 18:18:47

2011-04-15 13:12:09

.NETMEF

2021-10-18 08:28:03

Kafka架構主從架構

2011-02-13 13:04:00

HTML 5Web

2021-08-30 09:30:29

Kafka高性能設計

2023-09-11 13:27:00

數(shù)據(jù)訓練

2010-08-12 09:45:33

jQuery自定義事件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91超碰在线观看 | 天堂网av在线 | 亚洲成人久久久 | 中文字幕亚洲精品 | 综合一区二区三区 | 亚洲色图在线观看 | 欧美日韩一区二区三区在线观看 | 久久成人精品视频 | 欧美日韩精品专区 | 奇米影视在线 | 四色永久 | 国产精品99久久久久久动医院 | 特级黄色毛片 | 国产在线看片 | 国产在线一区观看 | 欧美日韩久久 | 国产精品久久久久久久久久久免费看 | 91.色| 亚洲精品小视频在线观看 | 精品91久久| 久久精品性视频 | 黄色成人国产 | 男女下面一进一出网站 | 国产美女自拍视频 | 欧美精品一区在线 | 久久久久久国模大尺度人体 | 在线观看国产www | 亚洲视频中文字幕 | 精品二区| 亚洲成人免费观看 | 国产伦精品一区二区三区四区视频 | 久久久精品一区二区 | 污视频在线免费观看 | 成人特区 | 国产午夜在线观看 | 亚洲成人毛片 | 久久51 | 午夜精品久久久久久久星辰影院 | 天天看天天爽 | 一区不卡在线观看 | 91麻豆精品国产91久久久久久 |