2014-11-20

好無聊喔


又不好意思去打擾人家.........



2014-11-18

如何一次性刪除Word文檔中的分節符?【外傳】

篇已經介紹了如何用“尋找及取代”功能一次性刪除Word文檔中的分節符了,本篇再補充一些題外話。要想如案例中的老師那樣,既要在頁尾顯示提示信息,又不想打印出來,其實最正確方法是使用“隱藏文字”功能。方法如下:

※※※※※※※※※※¡流量警告!※※※※※※※※※※

2014-11-17

如何一次性清除Word文檔中的分節符?

前已經介紹過Word的合併列印功能了,它的確給我們帶來很多便利。可是有一點卻是方便過頭了,反而造成了一些問題:當合併列印多條記錄時,製成的新文檔是分節的,每條記錄自成一節。換言之,可以修改每一節的版面設定(如直向橫向、紙張大小、邊界等等)、頁首頁尾等等,而不影響其他的節。

這樣的設計當然也無可厚非,畢竟每一節的頁首頁尾的確有可能不相同。但是,萬一我們需要對文檔作一些修改(例如刪除頁尾)時,就會有問題了:除非能把文檔中分節符全部刪去,否則我們只能一節一節地修改。

於是問題來了:如何一次性清除Word文檔中的分節符?對此,微軟官網上似乎也沒甚麼好建議。可是,這個原來也可以通過大家熟悉的“尋找及取代”功能來實現的。以下通過案例一則,來說明其操作方法及作用。

※※※※※※※※※※¡流量警告!※※※※※※※※※※

2014-11-14

感冒要不要吃藥【形像化篇】

前筆者轉過一篇《感冒要不要吃藥》,老母看過了,自己還在朋友圈轉過類似文章,卻依然置若罔聞。究其原因,或許是原文中術語太多了,讓人敬而遠之。因此,筆者只好自己作一篇比較形像化的。


話說當年,金軍“靖康之變”、直取汴京以後,依然貪得無饜,繼續南下犯宋。岳飛“請纓提銳旅,一鞭直渡清河洛”,親率岳家軍迎擊金軍。

岳家軍驍勇善戰,大破金軍,“駕長車,踏破賀蘭山缺”。然而所到之處皆短兵相接、金鼓齊鳴,留得一片狼籍、滿目瘡痍。宋高宗眼見烽火連天、山河日下,感慨“江山如故,千村寥落”,痛心不已。佞臣秦檜猜得高宗心意,進諫道:“不如鳴金收兵,與金人停戰議和如何?”

於是,宋高宗連下十二道金牌,急召岳飛回朝,“十年之力,廢於一旦”。一下子,戰事平息、歌舞昇平,回到太平盛世,高宗大喜。

之後的事大家都知道了:忠將遭殃、佞臣當道,宋室樂不思蜀,無心修復失地,“暖風熏得遊人醉,直把杭州作汴州”。後來南宋屢受外敵侵犯,國力積弱,苟延殘喘百年後,終被蒙古兵所滅。


在一場感冒中,病毒就是金軍,自身防禦系統就是岳家軍,流鼻水、噴嚏、咳嗽、發燒等不適症狀則是兩軍交戰時造成的“滿目瘡痍”。至於感冒藥,它不是天降神兵,對抗不了“金軍”,相反它正是宋高宗的十二道金牌,用來敕令“岳家軍”立即丟盔棄甲、鳴金收兵。它可以平息戰事,換來片刻的安寧,卻無助“驅除韃虜”。


現在您就是宋高宗,手持“十二道金牌”,想要偏安一隅、拱讓半壁江山,還是想要奮力抗戰、修復失地,請陛下自行定奪......


杭州岳王廟的岳飛像及“還我河山”牌匾(網上圖片)
岳墳前的秦檜跪像(筆者攝,攝得真差......)

2014-11-12

“賭仔磨爛蓆”的數學原理

註:本文僅供筆者自娛自樂之用,內容相信沒有人會看的,有興趣的讀者直接看結論即可,多謝合作!


信大家都聽說過“賭仔磨爛蓆”這句俗語,大概就是“長賭必輸”的意思。人們說這句說話時,更多是從心理角度出發的;可是從數學上分析,也的確有其道理。賭博遊戲縱然五花八門,卻有一個重要的共通點:贏錢總比輸錢難。換言之,“產出”的期望值總比“投入”低。

舉個人盡皆知的例子--“賭大小”:三顆骰子點數相加,10點或以下算“開大”、11點或以上算“開小”,押對了則1賠1,押錯則全賠。“開大”、“開小”的概率是一樣的,但概率略小於50%,因為還有“圍骰通殺”的情況。“圍骰”的概率看上去很小,然而,計算結果發現,正是由於這個微不足道的“不公平”不斷累積疊加,導致了“賭仔磨爛蓆”的情況。

以下就以“賭大小”為例,分析一下“賭仔磨爛蓆”是如何發生的。以下討論默認賭場、莊家沒有“出千”,擲骰子時每一面的概率相同,均為1/6。



※※※※※※※※※※※※※※※※※※

首先論證一下“開大”跟“開小”的概率為甚麼是一樣的。當然也可以用正常的“排列組合”來分析,但筆者想了個“旁門左道”,似乎更直觀一些。

記集合{1,2,3,4,5,6}為X,可知對任意的x屬於X,有且僅有另一個x'屬於X,使得x+x'=7(聽上去玄裡玄乎的,但如果改寫成 y=7-x 或 f(x)=7-x 就十分清晰了。),而且x不等於x'。在這個案例中,筆者姑且把x和x'稱為一對“共軛數”。

顯然,以上就是對於一顆骰子的情況,即對於任意的擲骰結果x,都有且僅有一個共軛x',使得x+x'=7。現在假設有三顆骰子A、B、C,其擲骰結果分別為a、b、c,而其共軛數分別記為a'、b'、c'。

大家知道,根據賭博規則,當三粒骰子之和小於或等於10時算“開小”,大於或等於11算“開大”(圍骰除外,稍後便會討論)。假設a+b+c<=10,則其共軛數:
a'+b'+c'=(7-a)+(7-b)+(7-c)             =21-(a+b+c)
             >=21-10=11
換言之,對任何一個“開小”的擲骰結果,都有一個共軛的“開大”結果與之一一對應;反之亦然。因此,有多少個“開小”的組合,就有多少個“開大”的組合,故兩者概率相等。


※※※※※※※※※※※※※※※※※※

接着討論“圍骰通殺”的情況。一顆骰子有六面,有6個可能的擲骰結果,三顆骰子就可能有6x6x6=216(嚴格而言是C(6,1) x C(6,1) x C(6,1))種結果,根據上面的討論,“開大”、“開小”的組合一樣多,均為216/2=108種。

然而,當三顆骰子結果相同時,即擲出[1,1,1]、[2,2,2]、......、[6,6,6]六種(嚴格而言是C(6,1) x C(1,1) x C(1,1))結果時被稱為“圍骰”,此時不管“押小”還是“押大”都要輸錢,無論加出來的結果是小於10還是大於11。因此,“開大”的組合中要扣除[4,4,4]、[5,5,5]、[6,6,6]三種,剩108-3=105種,實際“開大”的概率則為105/216=48.6111%,同理,實際“開小”的概率也是48.6111%。(顯然,[1,1,1]與[6,6,6]、[2,2,2]與[5,5,5]、[3,3,3]與[4,4,4]也互成共軛對)


換言之,當閣下在賭場下注押大(或押小)時,有48.6111%機率贏錢(以下記為“p”),有100%-48.6111%=51.3888%輸錢(以下記為“1-p”)。



※※※※※※※※※※※※※※※※※※

假設“賭仔”有本金$10,000.00(以下記為A),那麼他一注“曬冷”、或者平均分成100注慢慢“磨”,勝算分別幾何?接下來便將分情況討論。


【1. 一注“曬冷”】


一注“曬冷”的情況,其實上面已經討論過了。一個回合,只有“輸”或“贏”兩種可能,其中贏錢的概率就是p,即48.6111%;輸錢的概率是1-p,即51.3888%。


投入$10,000,有48.6111%機會“產出”$20,000,有51.3888%“產出”$0(全賠),因此“產出”的期望值為:

Exp = 48.6111% x $20000 + 51.3888% x $0 = $9722.22
【2. 分成兩注】

分成兩回合,情況複雜一些。每回合各有“輸”、“贏”兩種結果,因此結果共有2x2=4種(嚴格而言是C(2,1) x C(2,1)種),分別是“兩戰全勝”、“先勝後負”、“先負後勝”、“兩戰皆北”。其中只有前者能贏錢、只有後者會輸錢、中間兩者則能“全身而退”。因此,勝、和、負的概率分別為:

勝(W):P(W) = p x p = 48.6111% x 48.6111% = 23.6304%
和(D):P(D) = p x (1-p) + (1-p) x p = 24.9807% + 24.9807% = 49.9614%
負(L):P(L) = (1-p) x (1-p) = 51.3888% x 51.3888% = 26.4082%
由於分成了兩注,每一回合投入A/2=$5,000,押對則產出2x(A/2)=$10,000,押錯則產出$0。因此,“兩戰全勝”總產出為$10,000+$10,000=$20,000,“一勝一負”產出為$10,000+$0=$10,000 ,“兩戰皆北”的產出則為$0。因此期望值為:
Exp = P(W) x $20000 + P(D) x $10000 + P(L) x $0 = $9722.22
由此可得出兩個比較重要的發現:
  1. 偶數的情況與奇數不同。分成偶數注時,結果可以“打和”,而奇數必定分出勝負;
  2. 分成兩注時,“贏錢”的概率雖與“一注曬冷”的情況不同,但期望值仍相同。

【3. 分成三注】


分成三回合,情況就更複雜了。每回合有“輸”“贏”兩種結果,故一共有2x2x2=8種情況(C(2,1) x C(2,1) x C(2,1)),其中:
  • 三連勝的情況只有C(3,3)=1種,概率P(3) = C(3,3) x p x p x p = C(3,3) x p^3
  • 兩勝一負有C(3,2)=3種(即[勝勝負]、[勝負勝]、[負勝勝]),概率P(2) = C(3,2) x p x p x (1-p) = C(3,2) x p^2 x (1-p)
  • 一勝兩負則有C(3,1)=3種,概率P(1) = C(3,1) x p x (1-p) x (1-p) = C(3,1) x p x (1-p)^2
  • 三戰盡墨的有C(3,0)=1種,概率P(0) = C(3,0) x (1-p) x (1-p) x (1-p) = C(3,0) x (1-p)^3
由於“三連勝”或“兩勝一負”都屬於“贏錢”,而“一勝兩負”及“三戰盡墨”均屬“輸錢”,沒有打和的情況。代入p=48.6111%,得“贏錢”、“輸錢”的概率分別為:
勝(W):P(W) = P(3) + P(2) = 11.4870% + 36.4302% = 47.9172%
負(L) :P(L) = P(1) + P(0) = 38.5119% + 13.5709% = 52.0828%
期望值分析:對每一回合,投入均為A/3=$3,333.33(先不管實際操作是否可行),押對則產出2 x (A/3) = $6,666.67,押錯則產出$0。因此:
押對三次的產出E(3) = 2 x (A/3) x 3;
押對兩次的產出E(2) = 2 x (A/3) x 2 + 0 x 1;
押對一次的產出E(1) = 2 x (A/3) x 1 + 0 x 2;
全部押錯的產出E(0) = 2 x (A/3) x 0 + 0 x 3。
因此,總產出的期望值為:
Exp = P(3) x E(3) + P(2) x E(2) + P(1) x E(1) + P(0) x E(0)
代入相關數據,得Exp=$9,722.22。

這次的結論就比較豐富了:
  1. 分成奇數回合後,當“勝”的回合多於總回合數的一半時就能贏錢。例如本例中,總回合數為3,一半即3/2=1.5,因此“三連勝”(3>1.5)或“兩勝一負”(2>1.5)都屬於“贏錢”,而“一勝兩負”(1<1.5)及“三戰盡墨”(0<1.5)均屬“輸錢”;
  2. 分成三注後,贏錢的概率為47.9172%,略低於“一注曬冷”的48.6111%;
  3. 期望值仍跟之前一樣,為$9,722.22。
五注、七注的情況與之類似,結果如下表所示。其中本金均為$10,000.00,n表示平均分成多少回合,i表示“賭仔”勝出多少回合,Incoming則是勝出i回合時的產出。當i>(n/2)時屬“賭仔”贏錢(W)的情況,i<(n/2)則為輸錢(L)的情況,沒有打和(D)的情況。把所有i>n/2的概率(Probability)加起來,就是“賭仔”贏錢的概率(已加粗、斜體及下劃線);輸錢亦然。Expectation(i) = Incoming(i) x Probability(i),把所有Expectation(i)加起來,便得到總的期望值Total Expectation。




經過本例的分析,“一般情況”也呼之欲出了。


【4. n為奇數的一般情況】

直接寫結果吧!假設“賭仔”將本金A平均分成n份(n為奇數),分n回合下注,則他勝出其中 i 回合的概率為:
當i>(n/2),即i>=[(n+1)/2]時,“賭仔”贏錢,因此贏錢的概率為:
 當i<(n/2),即i<=[(n-1)/2]時,“賭仔”輸錢,即輸錢概率為:
而“賭仔”將本金A分成n份,每回合投入A/n,若獲勝則產出2 x A/n,失敗則產出0。因此,假設“賭仔”獲勝 i 回合,則他收獲的“產出”為:
E(i) = 2 x A/n x i + 0 x (n-i)
故總期望值為:


【5. n為偶數的一般情況

n為偶數時,形式上也跟奇數差不多,當i>(n/2)時,“賭仔”還是贏錢的, 當i<(n/2)時,“賭仔”還是輸錢的。不同之處在於,因為n是偶數,所有n/2是整數,因此i可以等於n/2,此時結果為“打和”。

從n回合中勝出i回合的概率仍為:

當i>(n/2),即i>=[(n/2)+1]時[此處與奇數情況稍有差異],“賭仔”贏錢,因此贏錢的概率為:
當i<(n/2),即i<=[(n/2)-1]時,“賭仔”輸錢,即輸錢概率為:
當i=n/2時則打和,其概率為:
總期望值為:

【6. 當n很大很大】


以上第3點的最後部分,筆者就曾用Excel表格計算n=3、5、7的情況。然而,當n很大很大時,用表格的方格無疑比較麻煩,例如當n=1000時,就要列一個1000列的表格。為簡便操作,筆者寫了個巨集如下:


直接輸入變量n,再運行巨集(Alt + F8),便可迅速計得“賭仔”的勝算。以下列舉一些數據:


 奇數情況:
  • 一注“曬冷”,勝算為48.6111%;
  • 分成9注,勝算為46.5855%;
  • 分成99注,勝算為39.0837%,不足四成;
  • 分成999注,勝算為18.9874%,不足兩成;
  • 分成9999注,電腦計不出來了......

 偶數情況:
  • 分成2注,有23.6304%機會贏錢,另有49.9614%機會全身而退;
  • 分成10注,勝算為34.3282%,另有24.5146%機會全身而退。看似勝算高了,其實輸錢的概率也大幅從26.4082%升至41.1572%;
  • 分成100注,勝算為35.2549%,而打和機會為7.6576%,輸錢機會為57.0875%;
  • 分成1000注,勝率僅餘18.1300%,另有1.7148%機會打和,失敗率逾80%......
該檔案已上傳至此,各位可以自行用其他數據計算,但記得要啟用巨集哦。附送筆者繪畫的兩幅曲線圖,橫軸為n,竪軸為概率。藍線、紅線、綠線分別代表“賭仔”贏、輸、打和的概率。
奇數情況
偶數情況

通過以上數據及圖表,相信各位已經感受到“賭仔磨爛蓆”的道理了。

【7. 假如沒有圍骰通殺

上面已經討論過,不考慮“圍骰通殺”的時候,開大、開小的概率相同,均為50%,即p=(1-p)=50%。若把檔案中的p和(1-p)都設為50%再執行巨集,那麼可以發現,即使“賭仔”與莊家激戰999回合,依然難分高下。

所以,正如文章開頭所說的,正是由於微不足道的“不公平”不斷累積疊加,才導致了“賭仔磨爛蓆”的情況。

【8. 思考題】

以上已經列出了一般情況的計算公式了,可是公式形式比較複雜,特別是n比較大的時候,必須用電腦才能計算。因此,能否通過泰勒多項式等方法來簡化公式呢?只怪筆者當年微積分沒學好,曲線圖上也無法擬合出一條很準確的曲線,這個問題只好留待各位高人賜教。


※※※※※※※※※※※※※※※※※※

“賭仔磨爛蓆”,據說泡妞也是這樣。

2014-11-07

用Photoshop制作GIF動畫

面兩篇文章介紹了Excel的資料剖析功能,希望對各位有參考價值。而對筆者而言,寫該兩篇文章,最大的收穫則是學會了用Photoshop來制作GIF動畫。

大家一定都知道,Adobe公司的Photoshop是最受歡迎的圖像處理軟件之一;大家卻不一定知道,Photoshop還能制作GIF動畫。(註:要是知道的話可以繞道了,本文沒有 閣下需要的資訊......)

關於制作GIF動畫,筆者最初用的是台灣Ulead Photoimpact的捆綁軟件--Ulead GIF Animator,後來因為Ulead的盜版資源不好找,才“轉戰”Photoshop。起初Photoshop也有類似的捆綁軟件,名為ImageReady。自Photoshop CS3以來,由於大部分ImageReady的功能在Photoshop已經具備,ImageReady便走進歷史。順理成章地,Photoshop CS3亦具備了制作GIF動畫的功能。

長話短說,以下將會介紹如何用Photoshop制作GIF動畫,再次提醒:高手請無視,以免浪費時間......


※※※※※※※※※※¡流量警告!※※※※※※※※※※

2014-11-05

Excel的資料剖析功能【下】

“資料剖析精靈”的“步驟3之1”有兩個選項,在上例中我們選擇了分隔符號(D),即命令電腦,當遇到某特定字元(如逗號、空格、橫線、指定數字或字母)時,就要“下刀”把儲存格“一分為二”。

 而另一個選項是“固定寬度”,顧名思義,它是命令電腦按寬度來拆分儲存格內容。以下舉一個不相干的案例加以說明:


※※※※※※※※※※¡流量警告!※※※※※※※※※※

2014-11-01

染髮霜廣告

看電視的讀者朋友們應該都留意到,最近cctvb在賣一款新的染髮霜廣告,場景設於一草地木球(?)場,3~4名圍在圓桌上閒聊,其中一名很chok的老頭是廣告男主角,在不斷硬銷一款染髮霜。由於筆者不是其目前客戶群,起初並沒有太在意廣告內容。

說到染髮霜廣告,最燴炙人口的當然是“三十年不變”的美源髮彩廣告,即使不是目標客戶群,對其廣告詞也一定耳熟能詳。甚至筆者最近嘲笑某人時,還引用了其中的經典名句:

上述兩則廣告有不少共通點,首先當然兩者都是染髮廂廣告,除此之外--筆者也是最近爬文時發現的--兩則廣告的男主角居然是同一人--演員曾江(在經典電視劇《大時代》中飾演奸角龍探長那位)。這顯然不是巧合,而是後來者有意為之。仔細一看,這款Salon de Pro染髮霜廣告的眾多橋段都是影射美源髮彩的,例如廣告開頭,一個黑球彈走另一個遮擋着白球的黑球(寓意用一款新的染髮霜取代另一款染髮霜),又如第一句廣告詞,龍套男問主角曾江,“咦!你仲用緊戈隻染髮霜呀?”......

出現這種“抽水”的現象,首先當然Salon de Pro有些不厚道,但歸根究底,還是一成不變的美源髮彩咎由自取的。至於演員曾江,相信沒有人會怪他不念舊情吧!
 
最後,既然這個廣告能這樣拍,下次筆者也想導演一個廣告,橋段如下(演員還是以前的三人組):
*一的士在十字路口失控飄移*
*女乘客尖叫*
鬍鬚司機:“對唔住呀!我用咗愛X堅架啦。”
男乘客:“哼!仲用愛X堅?!用XXX啦!”
............
不過話說回來,筆者最近也注意到,Salon de Pro的廣告詞已經改了:第一句由“咦!你仲用緊戈隻染髮霜呀?”變成了“咦!你用緊邊隻染髮霜架?”,用意十分明顯。看來上面的橋段還是行不通......