Re: [閒聊] 1%的抽卡率抽100次機率是63.4%?

看板C_Chat作者 (見鬼噢)時間4年前 (2019/06/04 11:17), 4年前編輯推噓77(781163)
留言242則, 53人參與, 4年前最新討論串7/9 (看更多)
※ 引述《fragmentwing (片翼碎夢)》之銘言: : https://imgur.com/fs1T6T9
: 獻醜 : 原本想說要用log去算,發現超不準,只好直接算了 : 怕超過2*32次,就用10次和0.1的機率去算了 : 至少一次的機率==一次+兩次+...+N(抽的總次數)次 : 以下程式碼,才正式學C不到10天,請鞭小力點 : #include<stdio.h> : #include<math.h> : int cntnis(int a,int b){ : int top=1,bottom=1; : for(int i=1;i<=b;i++){ : top*=(a-i+1); : bottom*=i; : } : int compute=top/bottom; : return compute; : } : double multi(double have,int havet,int nohavet){ : double result=pow(have,havet)*pow((1.0-have),nohavet); : return result; : } : int main(){ : int times,cntn,i; : double haveis,mulh,probability,expectation=0; : times=10; : haveis=0.1; : for(i=1;i<=times;i++){ : cntn=cntnis(times,i); : mulh=multi(haveis,i,times-i); : probability=cntn*mulh; : printf("抽 %d 次中,抽中 %d 張的機率= %lf\n",times,i,probability); : expectation+=probability*i; : } : printf("抽 %d 次,機率 %.3lf 期望值為: %lf",times,haveis,expectation); : return 0; : } 看到原PO說剛學C就想拿來運用,想要鼓勵一下原PO, 這才是學程式的精神,學了就是有需要就要想到它,把它要拿出來用 有一些人認為C太低階,程式碼太長,用Python或Matlab打起來比較簡單 在這個案例上是沒錯啦,畢竟只是跑10次迴圈而已 但如果是跑上萬次、甚至是百萬次的話,我就建議用C了 我大學念資工時,有一堂課叫做 隨機程序 專門就是再學如何寫有效率的程式去模擬隨機環境,統計十萬百萬次後,比較是否符合數學上計算的機率 例如: 撲克牌抽三張都是紅心,模擬百萬次的成功次數 有三個袋子,裡面各有紅白三顆球,A袋摸一顆球放B袋,B袋摸一顆放C袋,最後C袋摸出紅球,模擬百萬次的成功次數 諸如此類的各種機率問題,都可以用程式去模擬十萬、百萬、甚至千萬次 這種迴圈都是要跑很久的,就比較需要可以碰觸到低階的C去寫程式 可以break迴圈就break,盡可能的減少不必要的過程 Matlab就很適合跑一些很難去寫的數學式演算法,因為都建好函數了 Laplace阿、Fourier都可以直接呼叫 可以畫圖也是一大優勢 我上面用C跑完的百萬次隨機模擬結果,也可以丟到Matlab去跑分布圖 讚讚 再來Matlab是以矩陣做運算的,也很適合去跑圖像分析圖像處理 當初實驗室學長也有在用Matlab做人臉分析處理的,不過我沒有涉獵就不贅述了 Python是我目前看過最好學的程式了 直覺符合人類語言、程式短易讀易改、主流多數人都會用 我自己就google自學Python玩過網路爬蟲wikia文本處理機器人聊天機器人 總結來說 C 適合新手打基礎、或是寫需要大量運算需要增加效率時使用 Matlab 適合數學計算、數位圖像處理 Python 適合快速寫簡單程式、或是開發一些應用 以原原PO的漫畫中例子,我們就可以以C做模擬: SSR機率1%,抽100次中,如果有中SSR就算成功,模擬百萬次,成功幾次 以數學理論上就是1-99%^100,這就可以直接在Matlab或是Python上做 在來比較最後的數值是否相似,以兩種不同的路來驗證最終結果沒問題 以上小弟淺見,還望各路大神鞭小力點 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.182.68 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1559618248.A.88E.html

06/04 11:20, 4年前 , 1F
我也是從c開始學
06/04 11:20, 1F

06/04 11:23, 4年前 , 2F
快推免得被說看不懂
06/04 11:23, 2F

06/04 11:24, 4年前 , 3F
我是從QB開始學...
06/04 11:24, 3F

06/04 11:24, 4年前 , 4F
喔喔,對對對,跟我想得差不多
06/04 11:24, 4F

06/04 11:25, 4年前 , 5F
我那時候大家都學C++啊,其實還是滿好用的啦
06/04 11:25, 5F

06/04 11:26, 4年前 , 6F
其實我也是這麼想的
06/04 11:26, 6F

06/04 11:29, 4年前 , 7F
其實我覺得第一個學C挺怪的就是
06/04 11:29, 7F

06/04 11:29, 4年前 , 8F
完了我只用過MATLAB
06/04 11:29, 8F

06/04 11:29, 4年前 , 9F
打錯,我是要說第一個語言學C++挺怪的
06/04 11:29, 9F
會說學C/C++打基礎,是因為比較低階,新人可以學習電腦程式的邏輯思考方式 我們系上大一程式設計課 上學期是先教Python,對於程式完全沒學過的人比較好上手 下學期才開始教C/C++,把程式邏輯基礎打好 不過我高三學測完就先翻書自學C了 :P ※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 11:36:54

06/04 11:31, 4年前 , 10F
python真的很不錯,c和c++的語法和方法太繁複了,做什麼
06/04 11:31, 10F

06/04 11:31, 4年前 , 11F
都要一套流程
06/04 11:31, 11F

06/04 11:32, 4年前 , 12F
static-typed 語言寫起來就很累啊
06/04 11:32, 12F

06/04 11:33, 4年前 , 13F
C/C++ 更麻煩的是沒有 garbage collection
06/04 11:33, 13F

06/04 11:34, 4年前 , 14F
大一上學校教c++根本害人
06/04 11:34, 14F

06/04 11:35, 4年前 , 15F
不過現在 MATLAB 做得到的事情Python幾乎都可以做了吧?
06/04 11:35, 15F

06/04 11:36, 4年前 , 16F
我之前大學資工三個班 其他兩班學c++我們學c
06/04 11:36, 16F

06/04 11:36, 4年前 , 17F
第一個學C怪在哪?頂多就沒python豐富 支援一堆..
06/04 11:36, 17F

06/04 11:36, 4年前 , 18F
第一個學C很ok,是學C++很怪
06/04 11:36, 18F

06/04 11:37, 4年前 , 19F
很多工學院大一也都教C++
06/04 11:37, 19F

06/04 11:37, 4年前 , 20F
但感覺不是很適合...
06/04 11:37, 20F

06/04 11:37, 4年前 , 21F
我知道啊 因為我們當初也是教C++ 課本就螞蟻 對吧?
06/04 11:37, 21F

06/04 11:38, 4年前 , 22F
c->c++->others
06/04 11:38, 22F

06/04 11:38, 4年前 , 23F
語言好不好用看用在哪,殺雞用牛刀怪刀不好用是很奇怪的事
06/04 11:38, 23F

06/04 11:39, 4年前 , 24F
c算很簡單的,c++導入物件概念,再來是其他
06/04 11:39, 24F

06/04 11:41, 4年前 , 25F
真的是要看用在什麼地方 如果你是寫driver跟寫app用的語
06/04 11:41, 25F

06/04 11:42, 4年前 , 26F
言本來就不會一樣
06/04 11:42, 26F

06/04 11:42, 4年前 , 27F
先學c/c++可以方便銜接計算機概論的硬體知識
06/04 11:42, 27F

06/04 11:43, 4年前 , 28F
我之所以提C比C++做為第一個語言較佳就是因為硬體的關聯
06/04 11:43, 28F

06/04 11:44, 4年前 , 29F
我不太懂為什麼教C++的一開始就 cout 和 << ,這兩者涉及
06/04 11:44, 29F

06/04 11:44, 4年前 , 30F
了class 和 operator overloading 的概念
06/04 11:44, 30F

06/04 11:44, 4年前 , 31F
而且很多教授直接噴 string class 出來存字串
06/04 11:44, 31F

06/04 11:44, 4年前 , 32F
這反而會妨礙學生理解字串的處理
06/04 11:44, 32F

06/04 11:45, 4年前 , 33F
但是在 C 裡面你就只有 char[]
06/04 11:45, 33F

06/04 11:45, 4年前 , 34F
arrenwu有沒有北七如我也看的懂得說法啊 ....
06/04 11:45, 34F

06/04 11:45, 4年前 , 35F
簡單的說就是C++的教學一開始常常使用高級咒文,但C會從
06/04 11:45, 35F

06/04 11:46, 4年前 , 36F
初級元素魔法開始
06/04 11:46, 36F

06/04 11:46, 4年前 , 37F
樓上把c++primer前面幾章讀一下就會大概知道a大在說啥
06/04 11:46, 37F
還有 167 則推文
還有 19 段內文
06/04 14:27, 4年前 , 205F
來的東西其他人合作起來有多臭自己都聞不出來
06/04 14:27, 205F

06/04 14:27, 4年前 , 206F
舉個例子,要寫Python就算沒辦法寫得夠Pythonic,至少code
06/04 14:27, 206F

06/04 14:27, 4年前 , 207F
style給我去把PEP8讀過一遍再來,私人專案沒關係,要公開之
06/04 14:27, 207F

06/04 14:27, 4年前 , 208F
前先sanitize一下不要臭到別人
06/04 14:27, 208F

06/04 14:27, 4年前 , 209F
也不是說寫C的就不臭,去翻一下GNU standard library人家是
06/04 14:27, 209F

06/04 14:27, 4年前 , 210F
用怎麼樣的慣例在寫C的,不要自己惡搞
06/04 14:27, 210F

06/04 14:27, 4年前 , 211F
06/04 14:27, 211F

06/04 14:27, 4年前 , 212F
能把虛擬碼換成某種語言跑起來,不代表你會那種語言,大家
06/04 14:27, 212F

06/04 14:27, 4年前 , 213F
都有的功能不重要,重點是你有沒有弄懂為什麼這個語言存在
06/04 14:27, 213F

06/04 14:27, 4年前 , 214F
的核心feature和什麼才是他的特色。
06/04 14:27, 214F

06/04 14:27, 4年前 , 215F
嫌Python慢之前,如果你知道Cython在幹嘛,知道Python為什
06/04 14:27, 215F

06/04 14:27, 4年前 , 216F
麼又稱glue language,你就會用C來寫core然後Python寫wrapp
06/04 14:27, 216F

06/04 14:27, 4年前 , 217F
er的方式來Pythonic地實作你的演算法然後再接駁給其他系統
06/04 14:27, 217F

06/04 14:27, 4年前 , 218F
Python的設計目的是減少人類的開發時間和各種重要元件之間
06/04 14:27, 218F

06/04 14:27, 4年前 , 219F
的串接overhead、作為複雜系統的前端語言,例如深度學習引
06/04 14:27, 219F

06/04 14:27, 4年前 , 220F
擎不約而同選用Python作為前端,C/CUDA作為後端一樣
06/04 14:27, 220F

06/04 14:32, 4年前 , 221F
結果這一串沒有經典引戰笑話XDDD,我以為是有人引戰說
06/04 14:32, 221F

06/04 14:32, 4年前 , 222F
了什麼xxx是世界上最好的語言才這麼多推
06/04 14:32, 222F

06/04 14:45, 4年前 , 223F
看來專家很多,想問一下,為啥學校教的跟業界要的落差很大
06/04 14:45, 223F
我是念中後段的國立大學 這邊的環境是學生程式能力參差不齊,更嚴重的是有很多學生只想混畢業 大一入學前都不會寫程式,下課回家除了作業也不會想要多練習程式 熱情沒練習程式能力當然無法進步,學生都原地踏步,能教的就不多 系上的規畫上,到了大三選修課才開始在課堂上學做專案 但說白了也只是不到千行的小專案 一堂課也才18周,還要上課教課程內容 以資料庫這堂課舉例,學關連式資料庫、SQL語法就花了約8~9周 期中考完上述後,才開始寫專案,每周課堂做專案報告 再來教授也不一定會跟業界有互動,當然就不知道現在業界流行的內容 有些教授更只顧著自己研究室的案子 畢竟申請研究經費還是比教育理念重要阿XD

06/04 14:47, 4年前 , 224F
要引戰的話先從tab還是4格空白開始聊吧
06/04 14:47, 224F

06/04 14:47, 4年前 , 225F
再來聊IDE背景顏色要深色還淺色
06/04 14:47, 225F

06/04 14:56, 4年前 , 226F
我支持IDE背景要深色
06/04 14:56, 226F

06/04 14:58, 4年前 , 227F
應該說學c容易習慣從下往上堆的思考,而c++,java..etc
06/04 14:58, 227F

06/04 14:58, 4年前 , 228F
通常是由上往下長的思路去設計的,沒切換過來撞牆是必
06/04 14:58, 228F

06/04 14:58, 4年前 , 229F
然的
06/04 14:58, 229F

06/04 14:59, 4年前 , 230F
我都用tab 打C用深色 Matlab用淺色 Latex深淺看心情
06/04 14:59, 230F

06/04 15:09, 4年前 , 231F
因為學校不會教你實作...要自行摸索
06/04 15:09, 231F

06/04 15:10, 4年前 , 232F
再來C++的教科書很爛
06/04 15:10, 232F

06/04 15:15, 4年前 , 233F
從C開始之後學java 現在學python輕鬆多
06/04 15:15, 233F
※ 編輯: seeghost945 (60.251.182.68 臺灣), 06/04/2019 15:55:44

06/04 15:57, 4年前 , 234F
其實1堂課18周還滿久的啦XD
06/04 15:57, 234F

06/04 16:17, 4年前 , 235F
Code_Chat
06/04 16:17, 235F

06/04 16:40, 4年前 , 236F
現在好像戰不了Vim或Sublime了?
06/04 16:40, 236F

06/04 22:46, 4年前 , 237F
其實我是完全不會推薦一般人去寫C 不如去寫C#
06/04 22:46, 237F

06/04 22:47, 4年前 , 238F
上手容易度跟內建的API豐富程度差很多
06/04 22:47, 238F

06/04 22:47, 4年前 , 239F
數字還好 字串處理的話 C#是給你車開 C是要自己打造輪子
06/04 22:47, 239F

06/04 22:48, 4年前 , 240F
如果程式只是業餘興趣 花大把時間學C是比較沒必要
06/04 22:48, 240F

06/05 01:59, 4年前 , 241F
C#只是把method第一個字母改大寫的Java而已(戰
06/05 01:59, 241F

06/05 02:22, 4年前 , 242F
Java 也可以 不過我覺得 C# IDE 強大太多了 XD
06/05 02:22, 242F
文章代碼(AID): #1SzUB8YE (C_Chat)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 9 篇):
文章代碼(AID): #1SzUB8YE (C_Chat)