當前位置:首頁 » 編程軟體 » c編譯器抽卡片

c編譯器抽卡片

發布時間: 2024-01-09 00:22:23

① 抽卡概率與期望指計算

跟一個朋友討論了抽卡概率和期望的問題,平時也不怎麼研究「數學問題」,突然來這么一下,也是有點懵逼。之後搜到了這篇帖子https://bbs.nga.cn/read.php?tid=20203748&rand=359,有了些靈感。有幾個數值不知道怎麼算出來的,也是探索了一段時間,弄懂之後感覺還是挺簡單的。記錄一下,給像我一樣「愚蠢」的有緣人一些靈感。

朋友的想法是,打造裝備,每次成功概率遞增,計算打造成功的期望。

以圖片1中的數據為例,A列就是強化裝備的次數,B列就是某次強化裝備時的概率(系統設定的),C列就是某次強化裝備時的實際概率(條件概率),D列就是強化次數對應的期望,E列就是強化20次的總期望,也就是按照這種概率,玩家強化裝備成功的平均次數為5.29次。

實際概率的演算法,比如第二次成功的概率不是10%,因為它的成功建立在第一次的失敗上,所以是(1-5%)*10%。同樣的第三次成功的概率建立在第一次和第二次都失敗的基礎上,所以是(1-5%)*(1-10%)*15%。以此類推,根據設定的概率得到20次分別對應的實際概率。

期望的演算法,則是 次數*其對應的實際概率。總期望就是對各個次數對應的期望的累加。這種演算法一定要保證,所有事件(次數)的實際概率的總和為1。如果不為1,簡單的累加就不是真實的期望。這里我一開始沒想明白,下面用個例子解釋一下。

圖片2中的事例和數據是比較好理解的,跟圖1中的差不多,只不過圖2中的概率是恆定不變的,計算起來容易一點。

需要注意的是,計算S人物中獎期望值里,前99抽的概率*抽數都是一樣的,代入公式,第100抽的不一樣了。第100抽的概率是(1-0.015)^99,並沒有像1到99抽那樣乘以0.015,是因為,第100抽必定會出,所以應該是(1-0.015)^99*100%。

其次,平均花費的計算困擾了我很久,也是一開始沒想明白的地方。

圖3是我用excel模擬的10抽內的數據。因為之前計算100抽的期望就是把各個次數的期望相加,就是M列,但是數據對不上,而且也很不合理。經過多次推敲,終於得到10抽內平均花費是5.735的數據。就是用sum(M1:M10)/sum(K1:K10). 因為,平均抽卡數 = 總抽卡數/總人數。

如果總人數是1的話,前10抽的人數就是1*14.027%。K列代表的是實際概率,可以理解為其對應的抽卡次數對應的人數概率。比如,有0.015的玩家抽了1次就抽到了。有0.014775的玩家抽了2次抽到了。所以 0.015*1得到人數,1得到抽卡次數,0.015*1*1得到,這0.015的人抽了幾張卡。 0.01477*1得到人數,1得到抽卡次數,0.01477*1*2得到,這0.01477的人抽了幾張卡。以此類推。所以,M這列的總和,代表的是,前10抽抽到卡的這些人抽卡的總數。然後總抽卡數/總人數=0.754/0.1402 = 5.375。剩下的幾個平均花費也是這么算。圖二中46抽內的平均花費應該是算錯了的。

c語言這么厲害,它自身又是用什麼語言寫的編寫過程被稱為自舉

來自一個小白的提問: 「C語言本身用什麼語言寫的?」

換個角度來問,其實是:C語言在運行之前,得編譯才行,那C語言的編譯器從哪裡來?用什麼語言來寫的?如果是用C語言本身來寫的,到底是先有蛋還是先有雞?

我們假設世界上不存在任何編譯器, 先從機器語言說起,看看怎麼辦。

機器語言可以直接被CPU執行,不需要編譯器。

然後是匯編語言, 匯編語言雖然只是機器語言的助記符,但是也需要編譯成機器語言才能執行,沒辦法只能用機器語言來寫這第一個編譯器了(以後就不用了)。

匯編語言的問題解決了,就往前邁進了一大步,這時候就可以用匯編語言去寫C語言的編譯器,我們說這是C編譯器的老祖宗。

有了這個老祖宗,就可以編譯任意的C語言程序了,那是不是可以用C語言本身寫一個編譯器?只要用老祖宗編譯一下就可以了。

OK, 這么一層層上來,終於得到了一個用C語言寫的編譯器, 真是夠麻煩的。

到這個時候,之前那個匯編寫的C語言編譯器就可以拋棄了。

當然,如果在C語言之前,已經出現了別的高級語言,例如Pascal,那就可以用Pascal來寫一個C語言的編譯器。

第一個Pascal的編譯器據說使用Fortran寫的。而作為第一個高級語言的Fortran,它的編譯器應該是匯編語言寫的。

關於編譯器,這里邊有個有趣的傳說:

傳說Unix 發明人之一的 Ken Thompson在貝爾實驗室,大搖大擺的走到任何一台Unix機器前,輸入自己的用戶名和密碼,就能以root的方式登錄!

貝爾實驗室人才濟濟,另外一些大牛發誓要把這個漏洞找出來,他們通讀了Unix的C源碼,終於找到了登錄的後門, 清理後門以後編譯Unix , 運行, 可是Thompson 還是能夠登錄進去。

有人覺得可能是編譯器中有問題,在編譯Unix的時候植入了後門, 於是他們又用C語言重新寫了一個編譯器,用新的編譯器再次編譯了Unix, 這下總算天下太平了吧。

可是仍然不管用, Thompson 依然可以用root登錄,真是讓人崩潰!

後來Thompson 本人解開了秘密,是第一個C 語言編譯器有問題, 這個編譯器在編譯Unix源碼的時候,當然會植入後門, 這還不夠,更牛的是,如果你用C 語言寫了一個新編譯器,肯定也需要編譯成二進制代碼啊,用什麼來編譯,只有用Thompson寫的那第一個編譯器來編譯,好了, 你寫的這個編譯器就會被污染了,你的編譯器再去編譯Unix , 也會植入後門 :-)

說到這里我就想起了幾年前的XcodeGhost 事件,簡單來說就是在Xcode(非官方渠道下載的)中植入了木馬,這樣XCode編譯出的ios app都被污染了,這些app就可以被黑客利用做非法之事。

雖然這個XCodeGhost和Thompson的後面相比差得遠,但是提醒我們,下載軟體的時候要走正規渠道,從官方網站下載,認准網站的HTTPS標准,甚至可以驗證一下checksum。

可能有人問:我用匯編寫一段Hello World都很麻煩,居然有人可以用它寫復雜的編譯器?這可能嗎?

當然可能,在開發第一代Unix的時候,連C語言都沒有, Ken Thompson 和 Dennis Ritchie 可是用匯編一行行把Unix敲出來的。 WPS第一版是求伯君用匯編寫出來的, Turbo Pascal 的編譯器也是Anders 用匯編寫出來的,大神們的能力不是普通人能想像得到的。

對於編譯器來說,還可以採用「滾雪球」的方式來開發:

還是以C語言為例,第一個版本可以先選擇C語言的一個子集,例如只支持基本的數據類型,流程式控制制語句,函數調用...... 我們把這個子集稱為C0。

然後用匯編語言寫個編譯器,只搞定這個語言的子集C0,這樣寫起來就容易不少。

C0這個語言可以工作了,然後我們擴展這個子集,例如添加struct,指針...... ,把新的語言稱為C1。

那C1這個語言的編譯器由誰來寫? 自然是C0。

等到C1可以工作了,再次擴展語言特性,用C1寫編譯器,得到C2。

然後是C3, C4...... 最後得到完整的C語言。

這個過程被稱為bootstraping , 中文叫做自舉。

對於熱愛編程的人來說,有一群一起學習一起解答的小夥伴很重要!

這里有一個 C/C++編程學習交流俱樂部 (群),私信我【01】進入!

還有編程學習文件(源碼,零基礎教程,項目實戰教學視頻),歡迎初學者和正在進階中的小夥伴們!

③ c語言編譯器是一種什麼

c語言編譯器是一鬧櫻種軟體系統。

C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。

早期的C語言主要是用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,並很快在各類大、中顫彎返、小和微茄飢型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。

④ 全國計算機等級考試二級C語言的考試題目都是從《C語言題庫》裡面抽取的題目嗎

全國計算機等級考試二級C語言的考試題目的小題不是從《C語言題庫》中抽取的,後面的大題即編程題全部是從最近的一年的《C語言題庫》中抽取的。考題大部分是C語言,少部分是演算法與數據結構裡面的東西。就算不是《C語言題庫》題庫里的題,但是題型都差不多的。

c語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程序設計中備受青睞。C語言編譯器普遍存在於各種不同的操作系統中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了眾多後來的編程語言,例如C++、Objective-C、Java、C#等。

熱點內容
rsa解密演算法c 發布:2024-11-16 22:41:43 瀏覽:26
python3log 發布:2024-11-16 22:41:34 瀏覽:657
手機如何熱點密碼是多少 發布:2024-11-16 22:41:31 瀏覽:349
android上傳多個文件 發布:2024-11-16 22:36:24 瀏覽:312
蘋果微信25區怎麼改為安卓區 發布:2024-11-16 22:32:39 瀏覽:650
數控編程輕松 發布:2024-11-16 22:23:38 瀏覽:813
能緩存老友記的播放器 發布:2024-11-16 22:22:16 瀏覽:479
python寫入文件字典 發布:2024-11-16 22:21:14 瀏覽:15
androidandbase 發布:2024-11-16 22:16:34 瀏覽:417
phpifecho 發布:2024-11-16 21:57:11 瀏覽:724