Re: [請益] 想請問這個 time complexity 估法?
算一下期望值看看,有錯請鞭小力一點。
因為你的rand沒說只取整數,從線段來看就是總長是R,
落在N以內就結束(機率N/R),N到R之間就繼續(機率(R-N)/R)。
期望值 E = 1*(N/R) + 2*(N/R)*((R-N)/R) + 3*(N/R)*((R-N)/R)^2 + ......
((R-N)/R) * E = 1*(N/R)*((R-N)/R) + 2*(N/R)*((R-N)/R)^2 + ......
相減後得
(N/R) * E = (N/R) + (N/R)*((R-N)/R) + (N/R)*((R-N)/R)^2 + ......
= (N/R) / (N/R) = 1 (無窮等比級數,和等於 a/1-r )
E = R / N
所以期望值會跑的次數是R/N次,一般你在說R > N > 0的時候,
因為N還是不固定(儘管有上限),所以不會將它當作O(R/R)=O(1)來看,
我的話我會回答average case為O(R/N)或期望值為R/N次就好。
※ 引述《wheels ()》之銘言:
: # Python3
: # rand() will return number from [0, R) with the same posibility
: # assume R > N > 0
: def getNum(N):
: num = rand()
: while num > N:
: num = rand()
: return num
: # How many times the while-loop may executed?
: 若要以 R 跟 N 表示 time complexity
: 想請問這題有什麼方法可以下手嗎?
: 感謝各位大神們 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.164.196
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1542636719.A.E4E.html
推
11/19 22:30,
7年前
, 1F
11/19 22:30, 1F
推
11/19 22:34,
7年前
, 2F
11/19 22:34, 2F
推
11/19 22:52,
7年前
, 3F
11/19 22:52, 3F
→
11/19 23:01,
7年前
, 4F
11/19 23:01, 4F
→
11/19 23:01,
7年前
, 5F
11/19 23:01, 5F
推
11/20 01:06,
7年前
, 6F
11/20 01:06, 6F
→
11/20 01:19,
7年前
, 7F
11/20 01:19, 7F
→
11/20 01:21,
7年前
, 8F
11/20 01:21, 8F
推
11/20 11:32,
7年前
, 9F
11/20 11:32, 9F
推
11/20 20:01,
7年前
, 10F
11/20 20:01, 10F
推
11/20 20:33,
7年前
, 11F
11/20 20:33, 11F
→
11/20 20:34,
7年前
, 12F
11/20 20:34, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):