不想學數學,為何要學編程?那是一場災難

我們學編程,通常是這樣的。從語言開始,php、Java、c、c++、python現在比較流行的。學過的人都發現,嘔心瀝血,多少人強迫自己堅持著,何談所謂的興趣,為了是能夠拿一份高薪的工作。很多人,期待學成後,做出自己的產品,成為創業者,一鳴驚人。事實上,學完了一年,感覺做不出啥東西,學完了2年進展還是不大。然後就有了江湖傳言:“從入門到放棄”。

為什麼會學的那麼艱辛,因為不懂箇中原理。只能一個例子一個例子的強行鍛鍊,姑且叫做背誦吧。邏輯也只不過是簡單的if....else.....。

不想學數學,為何要學編程?那是一場災難

邏輯代碼

不是說不要嵌套太多的if麼?這樣的代碼,根本不是給人看的。嵌套太多,誰寫的都不對。這種寫大三角的事兒咱也沒少幹吧。算法變成了如果怎麼樣就怎樣的純邏輯。一些不夠複雜的東西可以這麼寫,若故宮你不嫌棄累的話。

給個例子大家參考下:張先生訂了一份《南昌晚報》,送報人在早上6:30-7:30之間把報紙送到他家,張先生離開家去上班的時間在早上7:00-8:00之間,則張先生在離開家之前能拿到報紙的概率是多少呢?先說下數學裡面的方法。

幾何概型解法:建立直角座標系,根據題意只要點落在陰影部分,就表示張先生在離開家之前能拿到報紙,即所求事件A發生。

不想學數學,為何要學編程?那是一場災難

陰影圖

郵遞員的時間段是一個集合:x∈(6.5,7.5),張先生時間:y∈(7,8),那就得到了以上陰影圖。用正方形的面積減去三角形的面積就得到了陰影的面積。好了這樣就可以求概率了:p(A)=(1*1-1/2*1/2*1/2)/1=7/8;

有了數學的解決思路,我們就可以用編程思維來解決了。x、y的時間是在一個時間段的隨機數。即x∈(6.5,7.5),y∈(7,8)。編程的時候,常用到的取隨機數的函數,大家都熟悉rand();rand(6.5,7.5),取得之間的任意一個隨機數,y也一樣。重複執行函數20次,得到20組數據。

不想學數學,為何要學編程?那是一場災難

隨機模擬

要使張先生在離開家前能得到報紙,則x≤y,從20組隨機數中可以看出有16組滿足,所以父親離開家前能得到報紙的概率:p(A)=16/20=0.8.和上面的7/8有所差別,但不大。計算機隨機模擬得到的是近似值。

用到了數學的集合結合了隨機模擬。看似不搭架的一對,總是有著千絲萬縷的聯繫。數學可以提供算法模型,解題的算法思路。當數學的思路應用到編程,其實這是一種同步的學習,同步的進步。溫故了數學知識,簡化了編程過程。


分享到:


相關文章: