日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

2048理论上最高能玩到多少分?

發(fā)布時間:2023/12/13 综合教程 199 生活家
生活随笔 收集整理的這篇文章主要介紹了 2048理论上最高能玩到多少分? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這篇文章也是基于知乎的一個答案。因?yàn)榍疤斓疤蹖懥藗€99行蛋疼版2048,所以一時興起在知乎上搜了搜2048,結(jié)果發(fā)現(xiàn)了這個問題。看了看,票數(shù)最高的兩個答案都是錯的,所以自己推導(dǎo)了一下。2048的玩法就不贅述了,先來看看相關(guān)的規(guī)則,因?yàn)槭荊abriele Cirulli讓這個游戲火起來的,以他的源代碼為準(zhǔn)(Gabriele Cirulli的版本的地址:2048)。

記分規(guī)則:在https://github.com/gabrielecirulli/2048/blob/master/js/game_manager.js中的167行:

self.score += merged.value;

分?jǐn)?shù)就是累加游戲過程中新合成方塊的數(shù)值

新方塊出現(xiàn)的規(guī)則:在https://github.com/gabrielecirulli/2048/blob/master/js/game_manager.js的71行:

var value = Math.random() < 0.9 ? 2 : 4;

新方塊的取值集為{2, 4},其中4出現(xiàn)的概率是0.1。

熟悉了規(guī)則,先來看一個比較普遍的問題:一般情況下,合成一個不太大的數(shù)值,能得到的最高分是多少?

不妨以2048為例子,2048肯定是由兩個1024合成的,所以如前所述,在合成2048的這一步,積分是2048,同樣1024也是由合成得到的,所以在得到兩個1024的這兩步,積分是1024*2=2048,以此類推,在>4的情況下,每一步分解的逆過程都會積2048分。因?yàn)槲覀兲接懙氖抢碚撟罡叻郑?dāng)然希望盡可能多的合成新方塊,所以不希望4是直接生成的,應(yīng)該都是由2合成。假設(shè)運(yùn)氣足夠好,玩的過程中出現(xiàn)的新方塊都是2,那么基于以上推導(dǎo),從2一路合成到2048,理論上的最高分為:
[2048 imes left( {{log }_{2}}left( 2048 ight)-{{log }_{2}}left( 2 ight) ight)={{2}^{11}} imes left( 11-1 ight)= ext{20480}]
對于任意從2開始合成的({{2}^{N}})這個公式可以推廣為:
[{{2}^{N}} imes left( N-1 ight)]

有了一般情況的得分計算為基礎(chǔ),來看極限情況:理論上最高分是多少?

要回答這個問題首先要來看2048理論上能達(dá)到最終布局是怎么樣的,假設(shè)能達(dá)到的最大的數(shù)值為({{2}^{N}}),那么在最后一步合成({{2}^{N}})時一定是占兩格的兩個({{2}^{N-1}}),那么對這兩個({{2}^{N-1}})做最小的展開,也就是保持一個不變,另一個展開為兩個({{2}^{N-2}})……如下所示:
[{{2}^{N}}xleftarrow{ ext{merge}}{{2}^{N-1}},{{2}^{N-1}}xleftarrow{ ext{merge}}{{2}^{N-1}},{{2}^{N-2}},{{2}^{N-2}}xleftarrow{ ext{merge}}cdots xleftarrow{ ext{merge}}{{2}^{N-1}},{{2}^{N-2}},cdots 16,8,4,4]
所以依次類推如果要合成({{2}^{N}}),則需要一直展開一個相鄰的方塊序列直到游戲能產(chǎn)生的方塊值,其中序列長度由要展開的級數(shù)的初始值決定,比如要展開到({{2}^{N-M}}),則需要的序列長度是(M+1),因?yàn)橛螒蛞还?6個格子,所以(M+1=16),則(M=15)。考慮到需要最大值,所以認(rèn)為在這樣一個序列中,游戲產(chǎn)生的方塊是兩個4,那么({{2}^{N-M}}={{2}^{N-15}}={{2}^{2}}=4),則(N=17),所以游戲能達(dá)到的方塊最大值是({{2}^{17}}= ext{131072})。同樣道理,當(dāng)一個131072已經(jīng)產(chǎn)生之后,還剩下15個格子,那么這種情況下能產(chǎn)生的最大值為65536,依此類推,14個格子能合成的最大值是32768,……所以理論上最大值的情況一定是前15個格子的值依次為({{2}^{17}},{{2}^{16}},{{2}^{15}},cdots ,{{2}^{4}},{{2}^{3}}),也就是(131072,65536,32768,cdots ,16,8)。

而最后一個格子是2或者4都無所謂,因?yàn)椴挥嫹帧_@種布局的一個例子如下(圖用我自己寫的蛋疼99行代碼Python版2048畫的):

因?yàn)樽詈笠粋€4或者2是游戲產(chǎn)生的,所以不計入積分,所以所有的積分都來源于從8到131072的15個數(shù)字。回想在第一問里得到的從2開始合成({{2}^{N}})的公式,那么似乎最高分應(yīng)該是N=3,4,5,...,16,17對應(yīng)的積分的總和,也就是
[sumlimits_{K=3}^{17}{{{2}^{K}} imes left( K-1 ight)}= ext{3932160}]

然而,答案并非如此,原因就是上面我關(guān)于合成數(shù)值的最小格子數(shù)占用的分析,當(dāng)65536合成之后,從2開始合成一個數(shù)值需要的最少格子數(shù)超過了可用格子數(shù)了。比如我們考慮要合成兩個65536的情況,也就是第一次合成出131072的情況,如下圖:

這是合成出131072必經(jīng)的一步,注意最左上角的4,這個4顯然不可能是由2合成的,而是游戲直接生成,因?yàn)閷τ?31072,從4開始合成最少需要的格子數(shù)是16,所以只有在需要合成的值是65536或者以下時,我們才有可能從2開始合成出所有的數(shù)值,也就是說對于2048這個游戲,只有當(dāng)(Nle 16)時({{2}^{N}} imes left( N-1 ight))才成立。所以當(dāng)131072出現(xiàn)時和出現(xiàn)后,計算最終分?jǐn)?shù)的關(guān)鍵就在于算出最少必須產(chǎn)生多少個值為4的方塊,那么最后就得從3932160的分?jǐn)?shù)里減去多少個4。

那么什么時候需要游戲必須產(chǎn)生4呢,我們再回到前面關(guān)于產(chǎn)生一個數(shù)值需要序列長度的推導(dǎo):前面得出的結(jié)論是要展開到({{2}^{N-M}}),則需要的序列長度是(M+1),因?yàn)槲覀兿M铣纱螖?shù)盡量最大化,所以要展開到({{2}^{N-M}}=2={{2}^{1}}),則需要的格子數(shù)目為(M+1=N),所以在({{2}^{17}}=131072)出現(xiàn)前,任何數(shù)字都不會需要16個以上的格子,所以也就不需要4的出現(xiàn)。而當(dāng)需要合成131072時,需要17個格子,而整個游戲只有16個,所以就不能從2開始合成了,于是這是第一次需要4的情況。當(dāng)131072已經(jīng)出現(xiàn)后,可用格子的最大數(shù)目是15了,這時候合成({{2}^{16}}=65536)也需要一次4了。當(dāng)65536合成之后,可用格子最大數(shù)目變?yōu)?4,這時候32768的合成也需要產(chǎn)生一個值為4的方塊了……于是依次類推,當(dāng)16合成之后(也用到了新產(chǎn)生的值為4的方塊),為了合成8,最后一次由游戲產(chǎn)生了4,也就是下圖:

所以從8到131072,一共15個數(shù)字在最后合成的過程中需要4的出現(xiàn),也就是說理論上能達(dá)到的最高分?jǐn)?shù)是:
[ ext{3932160-4} imes ext{15=3932100}]

當(dāng)然了,這個畢竟是理論最高分,實(shí)際操作起來,幾乎是無法達(dá)到的,通過不斷的悔棋和堅強(qiáng)的毅力達(dá)到我前面提過的最終局面也許并不難,但是2和4出現(xiàn)的比率是9:1這點(diǎn)是無法通過悔棋改變。不妨大概估算一下,對于({{2}^{N}})可以算出需要({{2}^{N-1}})個值為2的方塊,那么對于最終局面,如果不考慮格子數(shù)目對生成4的限制,則一共需要:
[sumlimits_{K=3}^{17}{{{2}^{K-1}}}={{2}^{17}}-{{2}^{2}}= ext{131068}]
這么多值為2的方塊,減去最后15個必須的值為4的方塊,并考慮由于10%的4會生成,并且一個4等價于2個2,所以實(shí)際游戲當(dāng)中玩到最終局面平均生成的方塊數(shù)目為:
[left( 131068-15 imes 2 ight)div 1.1approx ext{119125}]
則值為4的方塊平均數(shù)目約為11915,所以少產(chǎn)生的分?jǐn)?shù)為:
[ ext{11912} ext{.5} imes 4approx ext{47650}]
也就是說如果玩到了理論上方塊值最大的情況,平均分大約會是
[3932100-47650= ext{3884450}]
考慮到4出現(xiàn)的過程服從泊松分布,而在數(shù)目這么大的情況下可以用高斯分布來近似,如果很不嚴(yán)格地忽略掉4出現(xiàn)得漲落對總方塊數(shù)目的影響,則有
[sigma {{N}_{4}}approx sqrt{11915}approx ext{109}]
所以大部分分?jǐn)?shù)會落在以下范圍:
[3884450pm 3 imes 109 imes 4=3884450pm 1308]
我大概在網(wǎng)上搜了一下,發(fā)現(xiàn)玩到最終局面的大都分為兩種情況,一種是和我預(yù)測的一致在3884450左右的分?jǐn)?shù),還有一種是在386????附近,是因?yàn)镻ractice mode積分方法不同?版本不同?還是什么別的原因,就不太清楚了。

總結(jié)

以上是生活随笔為你收集整理的2048理论上最高能玩到多少分?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。