作者wheels ()
看板Soft_Job
標題[請益] 想請問這個 time complexity 估法?
時間Mon Nov 19 17:43:28 2018
# 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), 來自: 1.163.221.45
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1542620611.A.2B8.html
※ 編輯: wheels (1.163.221.45), 11/19/2018 17:49:52
1F:→ AnifalaKeiko: R/(R-N)次? 11/19 17:50
2F:→ wheels: 答案我也不知道,只想知道有什麼辦法可以切入分析 @@ 11/19 17:51
3F:推 motherboard: 最多就跑R-2次阿 11/19 17:54
4F:→ wheels: 為什麼是 R-2 呢?還是有機率一直骰不到 < N 的數吧? 11/19 17:55
5F:→ motherboard: 我的錯 XD 11/19 17:56
6F:→ wheels: 話說應該是問 big O notation,但無從下手起 orz 11/19 17:57
7F:→ dnabossking: 直覺1 11/19 17:58
8F:→ motherboard: 我看成N只會產生0~R... 11/19 17:58
9F:推 ripple0129: 實務上我會cProfile下去查就對了 11/19 18:01
10F:→ Domos: O( ) 11/19 18:03
11F:→ Domos: O(無限) 11/19 18:03
12F:推 Domos: omega(1) 11/19 18:05
13F:推 ohohoh: 迴圈執行次數是無窮等比級數,每次離開機率是N/R 11/19 18:10
14F:→ ohohoh: 題目是在問次數不是時間複雜度吧 11/19 18:11
15F:→ wheels: 其實是在問怎麼估 time complexity啦,寫的不太好 11/19 18:14
16F:→ wheels: 真是抱歉@@ 11/19 18:15
17F:→ wheels: 請多多包涵 11/19 18:15
18F:→ sherees: O(R/(R-N))? 11/19 18:16
19F:推 gofigure: 不是O(1)嗎? 和跑幾次沒關 跑1次也是 跑100次也是 N/R? 11/19 18:52
20F:推 kokacal: 如果是big O的話應該是worst case? 11/19 19:55
21F:推 ernieyang09: 帕斯卡三角形? 11/19 20:06
22F:推 Muscovy: 把 random() 換成 [0, R) 的均勻分布再往下算就好了啊. 11/19 20:19
23F:→ Muscovy: 變成 [0, 0.01, 0.02, ..., R) 這樣子, 沒必要跟他隨機 11/19 20:19
25F:推 itoni: 大O的話應該是無限 這演算法不保證會結束 11/20 01:59
26F:推 gofigure: 樓上的結論怎麼得出的? 11/20 09:30
27F:→ gofigure: 題目說[0,R)產生的數字機率一樣 11/20 09:31
28F:→ gofigure: 所以大數法則保證一定會結束 11/20 09:32
29F:推 gofigure: 如果是PRNG 那更不是probabilistic的範圍 11/20 09:41
30F:→ gofigure: 因為任何的PRNG都是deterministic 11/20 09:41
31F:→ gofigure: 換句話說 確定的原因跟大數法則沒關係 因為它不是真隨機 11/20 09:42
32F:→ gofigure: 這也是為什麼有的樂透可以被破解 因為規則被找到 11/20 09:43
33F:推 youtuuube000: big O不是upper bound嗎? 沒有結束上限當然是無限 11/20 12:12
34F:→ youtuuube000: 大吧? 11/20 12:12
35F:→ cha122977: big O可以算average case或worst case 11/20 17:58
36F:推 BangSaint: while loop的次數也是一個random variavle吧 可以算平 11/21 09:48
37F:→ BangSaint: 均 11/21 09:48
38F:→ DrTech: N越大(或越小),執行時間越久。與N的值是線性關係。所以是 11/21 19:08
39F:→ DrTech: O(n) 11/21 19:08
40F:推 reymk619: O(N) 11/21 23:53
41F:推 iq1000x: 大數法則有保證會結束嗎? 趨近而已吧 趨近還是不等於啊 11/22 02:47
42F:推 CJacky: O(R) 11/22 12:59
43F:推 pig2014: 平攤是O(n) 11/24 08:13
44F:推 pig2014: 但我覺得這是在rand有暫存R大小的狀況下 11/24 08:17