HTC在今年Mobile World Congress一口氣推出了六款的智慧型手機。我看著報紙上刊登的這六款手機排排站的照片,突然想起了一件事。
我指著報紙上的照片轉身問女兒:「妳看這一排手機的照片,每一隻手機畫面中央都有一個超大數字顯示的數位時鐘,對不對?」「嗯」:女兒回答。「妳知道為什麼每個時鐘都顯示了10:08這個時間?」
女兒想了想說:「應該是拍這張照片的時候就是十點八分吧。」
我說我認為這是有一個典故的,她猜會不會十月八號是某個特別的日子,或是晚上10:08是他們工程師下班的時間。我只能說:很有創意。
最後我告訴她答案。這個典故的確是女兒所說的「老人才會知道」。在以前鐘錶尚未數位化的時代,鐘錶行往往會將展示的靜止鐘錶的時間調成十點零八分,因為在這個時間點,時鐘的時針與分針將形成一個完美的V字形,具有美感。講究一點的還要調成十點零七分三十秒,讓秒針垂下。現在雖然進入了數位時鐘的世代,這個慣例還承襲了下來。不過,數位的10:08已經沒有任何美感可言了。
2011年2月17日 星期四
2011年2月13日 星期日
聰明包牌法
昨天報紙上有一則新聞標題「衰男包牌 16張號碼竟相同」。什麼人這麼衰?令人好奇。
新聞內容寫道:「彩券行人員告訴他有電腦選號的聰明包牌法,只要9注,1至49個數字都會出現。」這應該是基本算術。大樂透每注可選6個號碼,9注總共可選54號碼,當然可以讓1至49個數字都出現。只是每注要選哪六個號碼,是可以讓電腦程式代勞一下。
「於是他花7650元買了153注共34張彩券,當時沒看就收起來,不料第二天兌獎時,發現其中16張、每張5注的號碼都是同樣5組號碼,另16張、每張4注的號碼也是一樣情形,而且全數摃龜。」
如果將每9注包含所有1至49數字的選號視為一組,這位仁兄顯然買了153/9 = 17 組,這17組中竟然有16組的號碼組合是一模一樣的,難怪他要不滿。
到底程式出了甚麼問題?上面17組中有兩種組合,顯然這個程式不會笨到每次都輸出一樣的結果。有沒有可能是彩券行老闆的操作失誤,輸出第一組後嫌累,直接輸出第二組x16,就像印表機列印16份那樣。
另外包牌程式有沒有記憶?我是說它是否記得之前輸出的選號組,以避免同一個客人拿到相同的選號組合?看起來沒有,很多人寫這種程式純粹以亂數打發,認為出現相同的選號組合的機率很小。這是沒錯,但要注意亂數種子的初值化。相同的種子一定跑出相同的結果。
最後,這種包牌程式最適合作為程式練習題。比如說,讓使用者輸入9組號碼,產生這9組號碼中任意6組成為一注的所有組合。由於一般程式教學並不著重這種產生所有排列或組合的例子,所以一般程度的學生都會覺得這種題目有點難度。
新聞內容寫道:「彩券行人員告訴他有電腦選號的聰明包牌法,只要9注,1至49個數字都會出現。」這應該是基本算術。大樂透每注可選6個號碼,9注總共可選54號碼,當然可以讓1至49個數字都出現。只是每注要選哪六個號碼,是可以讓電腦程式代勞一下。
「於是他花7650元買了153注共34張彩券,當時沒看就收起來,不料第二天兌獎時,發現其中16張、每張5注的號碼都是同樣5組號碼,另16張、每張4注的號碼也是一樣情形,而且全數摃龜。」
如果將每9注包含所有1至49數字的選號視為一組,這位仁兄顯然買了153/9 = 17 組,這17組中竟然有16組的號碼組合是一模一樣的,難怪他要不滿。
到底程式出了甚麼問題?上面17組中有兩種組合,顯然這個程式不會笨到每次都輸出一樣的結果。有沒有可能是彩券行老闆的操作失誤,輸出第一組後嫌累,直接輸出第二組x16,就像印表機列印16份那樣。
另外包牌程式有沒有記憶?我是說它是否記得之前輸出的選號組,以避免同一個客人拿到相同的選號組合?看起來沒有,很多人寫這種程式純粹以亂數打發,認為出現相同的選號組合的機率很小。這是沒錯,但要注意亂數種子的初值化。相同的種子一定跑出相同的結果。
最後,這種包牌程式最適合作為程式練習題。比如說,讓使用者輸入9組號碼,產生這9組號碼中任意6組成為一注的所有組合。由於一般程式教學並不著重這種產生所有排列或組合的例子,所以一般程度的學生都會覺得這種題目有點難度。
2011年2月10日 星期四
按個讚
用過臉書的人都知道臉書有個按「讚」的功能。有人曾經想請臉書也提供按「幹」的功能,但顯然不會成功,因為臉書希望人們透過它來聯結人際網路,任何可能破壞人際關係連結的設計都是不予考慮的。
在現實生活中我見過類似的設計。2007年我自雲南昆明入境中國,在通關進行證照查驗時,見到海關官員櫃檯玻璃窗前有兩個按鈕,讓通關的民眾可以就官員的值勤態度按下「滿意」或「不滿意」鈕。這兩個按鈕的設計造成我當時的心理衝擊至今難忘。
衝擊之一是我沒想到在一個共產制度的國家,人民竟然可以赤裸裸的公開為官員打分數。另外這個按鈕評分制度沒有另加一個中性的「無意見」鈕。你可以選擇不要按鈕,但一旦要按鈕就是直接的「讚」或「幹」,沒有鄉愿的 「無意見」或「還好」。
我認為公務機關中需要直接面對民眾的櫃檯,都應該設置這樣的一個按鈕系統。公務機關應該要強制規定每個公務員都要建立自己的臉書系統(粉絲專頁?),然後將此按鈕系統與公務員的個人臉書建立連結。當某個洽公民眾對某個公務人員按下 「滿意」鈕時,該公務員的臉書中就會多一個「讚」。當然,考量我們溫柔敦厚的民情,我們可以不要設置「幹」的按鈕系統。這樣,公務員的年終考績就可以用按「讚」的次數多寡來衡量了。
在現實生活中我見過類似的設計。2007年我自雲南昆明入境中國,在通關進行證照查驗時,見到海關官員櫃檯玻璃窗前有兩個按鈕,讓通關的民眾可以就官員的值勤態度按下「滿意」或「不滿意」鈕。這兩個按鈕的設計造成我當時的心理衝擊至今難忘。
衝擊之一是我沒想到在一個共產制度的國家,人民竟然可以赤裸裸的公開為官員打分數。另外這個按鈕評分制度沒有另加一個中性的「無意見」鈕。你可以選擇不要按鈕,但一旦要按鈕就是直接的「讚」或「幹」,沒有鄉愿的 「無意見」或「還好」。
我認為公務機關中需要直接面對民眾的櫃檯,都應該設置這樣的一個按鈕系統。公務機關應該要強制規定每個公務員都要建立自己的臉書系統(粉絲專頁?),然後將此按鈕系統與公務員的個人臉書建立連結。當某個洽公民眾對某個公務人員按下 「滿意」鈕時,該公務員的臉書中就會多一個「讚」。當然,考量我們溫柔敦厚的民情,我們可以不要設置「幹」的按鈕系統。這樣,公務員的年終考績就可以用按「讚」的次數多寡來衡量了。
2011年2月8日 星期二
大樂透
「大樂透連九摃 今晚上看18億」這是今天新聞的標題。下午我開車經過民富街,一家賣樂透彩的店家門口停滿了買樂透顧客的汽機車。我看了一下門口的招牌,上面寫著:「本店開出兩次頭彩。」
顯然大家相信「開出過頭彩的店家,比起一般店來有較高的機會會再開出頭彩,所以到這家店買樂透中頭彩的機會比較大。」
這種認知對嗎?學過一點機率的人,習慣了教科書中動輒祭出的「獨立隨機試驗」假設,會告訴你這種說法是錯的。上次這家店開出頭獎的事件,不會影響這次開獎這家又開出頭獎的機率。
不過現實生活中,開出過頭獎的店家生意都會比較好些,也就是說從這家店賣出的彩券數目比普通的店多些,因此從這家店再開出頭獎的機率的確會比較高些。
這形成了一個有趣的現象:如果大多數人都相信「開出過頭彩的店家,比起一般店來有較高的機會會再開出頭彩」,就會使得這個現象成真。如果大多數都不相信,這個現象不會成立。
同樣的現象也可以在股市看到。只要大多數股市投資人都相信股市會上漲,股價真的就會因此而上漲,就算「照理」來說股市應該下跌的。
那麼到開出頭彩機率高的店家買彩券,中頭彩的機會比較大嗎?當然不會。所以結論是:
「開出過頭彩的店家,比起一般店來有較高的機會會再開出頭彩,但是到這家店買樂透中頭彩的機會並不會因此比較大。」
顯然大家相信「開出過頭彩的店家,比起一般店來有較高的機會會再開出頭彩,所以到這家店買樂透中頭彩的機會比較大。」
這種認知對嗎?學過一點機率的人,習慣了教科書中動輒祭出的「獨立隨機試驗」假設,會告訴你這種說法是錯的。上次這家店開出頭獎的事件,不會影響這次開獎這家又開出頭獎的機率。
不過現實生活中,開出過頭獎的店家生意都會比較好些,也就是說從這家店賣出的彩券數目比普通的店多些,因此從這家店再開出頭獎的機率的確會比較高些。
這形成了一個有趣的現象:如果大多數人都相信「開出過頭彩的店家,比起一般店來有較高的機會會再開出頭彩」,就會使得這個現象成真。如果大多數都不相信,這個現象不會成立。
同樣的現象也可以在股市看到。只要大多數股市投資人都相信股市會上漲,股價真的就會因此而上漲,就算「照理」來說股市應該下跌的。
那麼到開出頭彩機率高的店家買彩券,中頭彩的機會比較大嗎?當然不會。所以結論是:
「開出過頭彩的店家,比起一般店來有較高的機會會再開出頭彩,但是到這家店買樂透中頭彩的機會並不會因此比較大。」
2011年1月31日 星期一
還好
有次在國外開會,和一位來自中國大陸的學者聊天,他說很受不了台灣的藝人接受訪問時,問到對任何問題的看法,都千篇一率只會回答「還好」,沒有其他詞了。我一愣,自己倒是從來沒注意過這個現象。問他不然要怎麼回答,他說回答的方式多了,光是「還好」就可以說「還行」、「可以」、「過得去」、「還像個樣子」、「還不就那麼一回事」等。
我心中還蠻吃驚的。這些詞聽別人說出來,也知道是什麼意思,但是我無法想像別人問我意見時,我說得出 「還不就那麼一回事」這樣的話。感覺這是戲劇或文學作品中的用語,並不十分生活化。另外,其它的說法也顯得直接了些。
為什麼我會覺得其它說法直接了些?我仔細想了一想。我認為大部分人說「還好」時有兩種意思,一是沒有特別意見,另一是不願意話說得太白傷了別人。後者是一種對自我的防衛或對他人的善意,或僅僅只是習慣說話含蓄些,但是一旦養成習慣,就變成對任何事物的意見都是「還好」,儘管心中可能是有一些不同意見的。
我們可能對此見怪不怪,對透過他人的這一面鏡子,我們可以更加瞭解自己。到底是我們說話太過含蓄/敦厚/虛偽/沒主見,還是別人說話比較直接/主觀/不修邊幅?
我心中還蠻吃驚的。這些詞聽別人說出來,也知道是什麼意思,但是我無法想像別人問我意見時,我說得出 「還不就那麼一回事」這樣的話。感覺這是戲劇或文學作品中的用語,並不十分生活化。另外,其它的說法也顯得直接了些。
為什麼我會覺得其它說法直接了些?我仔細想了一想。我認為大部分人說「還好」時有兩種意思,一是沒有特別意見,另一是不願意話說得太白傷了別人。後者是一種對自我的防衛或對他人的善意,或僅僅只是習慣說話含蓄些,但是一旦養成習慣,就變成對任何事物的意見都是「還好」,儘管心中可能是有一些不同意見的。
我們可能對此見怪不怪,對透過他人的這一面鏡子,我們可以更加瞭解自己。到底是我們說話太過含蓄/敦厚/虛偽/沒主見,還是別人說話比較直接/主觀/不修邊幅?
2011年1月25日 星期二
鮑魚米粉
這是我從KH那邊聽到的。
有位民眾看到路邊一家餐廳招牌上寫著「鮑魚米粉30元」,心想老闆真是佛心來著,趕緊進去點了一碗。不料一碗吃到快見底了,還是沒有半點鮑魚痕跡。他心裏氣不過,找老闆理論,質疑這是欺騙顧客的行為。長得兄弟模樣的老闆不疾不徐的回答:「恁爸號做林鮑魚,開這間鮑魚米粉賣你一碗30元,你是有什麼意見嗎?」
有位民眾看到路邊一家餐廳招牌上寫著「鮑魚米粉30元」,心想老闆真是佛心來著,趕緊進去點了一碗。不料一碗吃到快見底了,還是沒有半點鮑魚痕跡。他心裏氣不過,找老闆理論,質疑這是欺騙顧客的行為。長得兄弟模樣的老闆不疾不徐的回答:「恁爸號做林鮑魚,開這間鮑魚米粉賣你一碗30元,你是有什麼意見嗎?」
2011年1月15日 星期六
氣象預報
另一半常常報怨氣象預報不準。我跟她解釋,氣象預報和節目預報不同,前者本來就會不準,後者除非遭遇不可抗力的因素,幾乎是可以百分之一百確定的。你不能將氣象預報當節目預報看,期望老天爺照中央氣象局預報的劇本演出。
其實這裡面還牽涉到何謂「預報準確」的問題,我沒和另一半提,免得她傷腦筋。以我們最關注的氣溫為例,中央氣象局預測今天新竹地區的氣溫是9到11度,如果真實溫度真的落在這個範圍內,那當然是準的,否則就是不準。準的話大家認為是應該的。如果不準的話,氣象局會被民眾抱怨。
可是且慢,在此前提下,我可以大膽預測未來一年台北的每日氣溫,而且保證100%準確。為什麼?因為我預測每一天的氣溫都在攝氏0度到40度之間。除非全球暖化的效應提早出現,我有信心此預測一定準確。但這種預報毫無參考價值可言。
所以對溫度預報而言,公佈出來的數值是在準確度與資訊價值間做個取捨。為了讓預報資訊有價值,預測的溫度區間不能太含混,如此自然會有大於0的機率預報結果會不準。
再以降雨預報為例,依據氣象局的定義,當天就算只下了一滴雨,也符合「下雨」的定義。因此會不會下雨是一個可以判定真偽的邏輯敘述,沒有模糊空間可言。不過氣象局的降雨預報並非明確敘述明天一定會或一定不會下雨,而是公佈一個降雨機率。如果氣象局預測降雨機率為70%,而真的下了雨,大家一定會認為這個預報是準的。反之若預測降雨機率70%但沒降雨,那顯然又是一次預測失準。
如果仔細思考此種認定方式,可以得到許多有趣的心得。首先氣象局公佈的是機率值,當它預測70%降雨機率的同時,它其實也同時預測了30%的不降雨機率(因為預測結果只有降雨與不降雨兩種可能,沒有模糊空間),為何我們就認定了氣象局是預言「會降雨」呢?顯然在我們的心目中已經對機率設定了一個門檻值,如果預言某個事件發生的機率值超過此門檻值,我們就認為此預言認定事件是會發生的,否則就是認定不會發生的。
大部分人心中的這個門檻值顯然是50%。所以氣象局公佈降雨機率是51%或是100%,我們都認定氣象局是預測「會降雨」。如果是這樣的話,氣象局何必再去區分51%, 70%或100%降雨機率的不同?反正民眾就是認定象局預測了「會降雨」。
進一步思考,預測51%的降雨機率,而且也真的降雨了,與預測100%的降雨機率且真的下雨,直覺上似乎後者的「準確度」又更高些。但是,如何量化這種「準確度」呢?
這個問題我沒有標準答案。但是我認為可以用下列方式量化。假設某預報預測次日降雨機率為p%。如果次日真的降雨了,此預測得分為p-(1-p);如果沒降雨,則得分為(1-p)-p。如此任何預測的得分皆在-1與1的範圍內,愈接近1表示預測愈準,愈接近-1則表示預測愈不準。例如,預測降雨機率100%且真的下雨了,則可以得100%-(1-100%)=1分。預測降雨機率70%且真的下雨了,則可以得70%-(1-70%)=0.4分。
另外,預測明天會不會下雨和預測擲骰子或擲硬幣的結果不同,後者一般認定是獨立隨機試驗,意思是說無論前一次試驗的結果為何,皆不影響我們對下一次出現結果的機率估計。但是天氣狀況不一樣,以台灣北部冬季氣候為例,當冷鋒或強烈大陸冷氣團過境時,往往會連下好幾天的雨。此時如果今天已經下了雨,明天下雨的機率應該要比今天不下雨時明天下雨的機率高些,也就是說今天的試驗結果(降雨或不降雨)會影響明天試驗結果的機率分佈。這就不是獨立隨機試驗了。
對於非獨立試驗,我們可以建立機率模型,以歷史資料預測未來的試驗結果。其中最簡單的馬可夫模型(Markov Model),只參考最近一次的系統狀態來決定下一次的試驗結果。有了這些工具,其實氣象學家要比隨意亂猜的表現要好得多才說得過去。
比如說,如果純粹依照歷史的機率模型(不參考今日實測的其他數據)預測今日下過雨後明日也下雨的機率是80%,而氣象局發佈了明日70%的下雨機率,實際上氣象局是認為明日下雨的機率低於一般機率模型的預測值。如果隔日果真下雨,我們還會認為氣象預報很準嗎?
事實上上述觀念也用不到多麼高深的機率模型。以南台灣的高雄來說,某個季節中下雨的日子非常少,甚至低於10%。如果氣象預報高雄明日的降雨機率為30%,從某種角度來說,此預報其實是講「明日下雨的機率遠高於該季節一般的平均值」。如果隔日果真下雨了,我們能說氣象局降雨預報不準嗎?或者隔日竟然沒有下雨,我們能說降雨預報很準嗎?
重點在於我們一般民眾不知道評估預測準與不準的參考基準點在哪裡。我們會以50%的機率當成門檻值,是因為沒有或不知道氣象預報的事前資訊(Prior Knowledge)。氣象單位有這些資訊,照理應該會比一般人的猜測準確許多。一般人會認為氣象預報不準,是我們心理上會將正確預報視為理所當然,而將注意力放在預報失準的少數例子。
其實這裡面還牽涉到何謂「預報準確」的問題,我沒和另一半提,免得她傷腦筋。以我們最關注的氣溫為例,中央氣象局預測今天新竹地區的氣溫是9到11度,如果真實溫度真的落在這個範圍內,那當然是準的,否則就是不準。準的話大家認為是應該的。如果不準的話,氣象局會被民眾抱怨。
可是且慢,在此前提下,我可以大膽預測未來一年台北的每日氣溫,而且保證100%準確。為什麼?因為我預測每一天的氣溫都在攝氏0度到40度之間。除非全球暖化的效應提早出現,我有信心此預測一定準確。但這種預報毫無參考價值可言。
所以對溫度預報而言,公佈出來的數值是在準確度與資訊價值間做個取捨。為了讓預報資訊有價值,預測的溫度區間不能太含混,如此自然會有大於0的機率預報結果會不準。
再以降雨預報為例,依據氣象局的定義,當天就算只下了一滴雨,也符合「下雨」的定義。因此會不會下雨是一個可以判定真偽的邏輯敘述,沒有模糊空間可言。不過氣象局的降雨預報並非明確敘述明天一定會或一定不會下雨,而是公佈一個降雨機率。如果氣象局預測降雨機率為70%,而真的下了雨,大家一定會認為這個預報是準的。反之若預測降雨機率70%但沒降雨,那顯然又是一次預測失準。
如果仔細思考此種認定方式,可以得到許多有趣的心得。首先氣象局公佈的是機率值,當它預測70%降雨機率的同時,它其實也同時預測了30%的不降雨機率(因為預測結果只有降雨與不降雨兩種可能,沒有模糊空間),為何我們就認定了氣象局是預言「會降雨」呢?顯然在我們的心目中已經對機率設定了一個門檻值,如果預言某個事件發生的機率值超過此門檻值,我們就認為此預言認定事件是會發生的,否則就是認定不會發生的。
大部分人心中的這個門檻值顯然是50%。所以氣象局公佈降雨機率是51%或是100%,我們都認定氣象局是預測「會降雨」。如果是這樣的話,氣象局何必再去區分51%, 70%或100%降雨機率的不同?反正民眾就是認定象局預測了「會降雨」。
進一步思考,預測51%的降雨機率,而且也真的降雨了,與預測100%的降雨機率且真的下雨,直覺上似乎後者的「準確度」又更高些。但是,如何量化這種「準確度」呢?
這個問題我沒有標準答案。但是我認為可以用下列方式量化。假設某預報預測次日降雨機率為p%。如果次日真的降雨了,此預測得分為p-(1-p);如果沒降雨,則得分為(1-p)-p。如此任何預測的得分皆在-1與1的範圍內,愈接近1表示預測愈準,愈接近-1則表示預測愈不準。例如,預測降雨機率100%且真的下雨了,則可以得100%-(1-100%)=1分。預測降雨機率70%且真的下雨了,則可以得70%-(1-70%)=0.4分。
另外,預測明天會不會下雨和預測擲骰子或擲硬幣的結果不同,後者一般認定是獨立隨機試驗,意思是說無論前一次試驗的結果為何,皆不影響我們對下一次出現結果的機率估計。但是天氣狀況不一樣,以台灣北部冬季氣候為例,當冷鋒或強烈大陸冷氣團過境時,往往會連下好幾天的雨。此時如果今天已經下了雨,明天下雨的機率應該要比今天不下雨時明天下雨的機率高些,也就是說今天的試驗結果(降雨或不降雨)會影響明天試驗結果的機率分佈。這就不是獨立隨機試驗了。
對於非獨立試驗,我們可以建立機率模型,以歷史資料預測未來的試驗結果。其中最簡單的馬可夫模型(Markov Model),只參考最近一次的系統狀態來決定下一次的試驗結果。有了這些工具,其實氣象學家要比隨意亂猜的表現要好得多才說得過去。
比如說,如果純粹依照歷史的機率模型(不參考今日實測的其他數據)預測今日下過雨後明日也下雨的機率是80%,而氣象局發佈了明日70%的下雨機率,實際上氣象局是認為明日下雨的機率低於一般機率模型的預測值。如果隔日果真下雨,我們還會認為氣象預報很準嗎?
事實上上述觀念也用不到多麼高深的機率模型。以南台灣的高雄來說,某個季節中下雨的日子非常少,甚至低於10%。如果氣象預報高雄明日的降雨機率為30%,從某種角度來說,此預報其實是講「明日下雨的機率遠高於該季節一般的平均值」。如果隔日果真下雨了,我們能說氣象局降雨預報不準嗎?或者隔日竟然沒有下雨,我們能說降雨預報很準嗎?
重點在於我們一般民眾不知道評估預測準與不準的參考基準點在哪裡。我們會以50%的機率當成門檻值,是因為沒有或不知道氣象預報的事前資訊(Prior Knowledge)。氣象單位有這些資訊,照理應該會比一般人的猜測準確許多。一般人會認為氣象預報不準,是我們心理上會將正確預報視為理所當然,而將注意力放在預報失準的少數例子。
訂閱:
文章 (Atom)