主頁 > 後端開發 > 【詔安撲克牌玩法 —— 寶】莊家(寶官)一定會贏嗎?

【詔安撲克牌玩法 —— 寶】莊家(寶官)一定會贏嗎?

2021-02-21 10:16:21 後端開發

統計莊家(寶官)贏得概率

  • 寶的玩法介紹
  • 關于洗牌
  • 實驗步驟
  • 實驗結果
  • 原始資料
  • 源代碼(Python)
  • 要想不輸,惟有不賭!

寶的玩法介紹

這是一種簡單、不需要技術僅靠運氣的撲克牌玩法,

開始前先在牌組中取出大小王,使用剩余的 52 張牌,莊家(閩南語為寶官)從自己開始,依次(通常為逆時針)給每個玩家發 1 張牌直至每個人手里有 2 張牌,然后每一個閑家分別與莊家比較手牌、計算輸贏的籌碼,比較方法如下:

如果兩張牌一樣,則稱為牌,寶牌比非寶牌大,其中寶A最大,并且贏得的籌碼為底注的 10 倍接下來依次為寶K、寶Q、寶J,并且贏得的籌碼為底注的 6 倍最后依次為寶10到寶2,并且贏得的籌碼為底注的 5 倍

如果兩張牌不一樣,則為非寶牌,此時先需要計算點數,點數的計算方法為兩張牌的大小的和對 10 取余,例如 13 和 8 的點數為 (13 + 8) % 10 = 1 ,最大的點數為 9 ,并且贏得的籌碼為底注的 4 倍,接下來為 8 ,并且贏得的籌碼為底注的 3 倍,接下來為 7 ,并且贏得的籌碼為底注的 2 倍,最后依次為 6、5、4、3、2、1、0,贏得的籌碼僅為底注,

如果遇到莊家和閑家手牌一樣大的時候,若均為 0 點則莊家贏,否則算和(即都不輸不贏),

以上是最為常見的玩法,其他玩法規定的翻倍數量可能與此不一致(如7點和8點均只贏得底注的兩倍),但是比較大小的方式都是一致的,

關于洗牌

雖然 numpy 有自帶的洗牌演算法,但是為了確保模擬的真實性,我設計了接近于真實洗牌方式的演算法,

首先將場上的廢(舊)牌隨機打亂后置于牌組的最下方,

再將牌組分為兩半,依次從兩個子牌組中取一張牌置于新牌組的最下方,組成新的牌組,

最后從新牌組的中間隨機抽取一定的牌置于新牌組的最上方,重復若干次,

實驗步驟

自變數為參與的玩家數總局數

對于每一種情況,進行 10000 次的模擬,最后統計出莊家贏的概率以及莊家平均輸贏情況、至多輸多少籌碼等資料,

底注為 1

詳情可以閱讀最后的源代碼,

實驗結果

我將原始資料中莊家(寶官)贏的概率匯總成下表,可以很明顯地看出,隨著玩家數以及總局數的增加,莊家(寶官)贏得概率也在增加

實驗結果統計表

需要注意的是,從原始資料中也可以觀察出,雖然隨著兩個自變數的增加莊家(寶官)贏得概率也在增加,但 最大輸錢數也在增加

原始資料

當玩家數為3且局數為60時,經過10000次模擬,莊贏的平均概率為73.34%、平均輸贏23.3433、最多輸112.0.

當玩家數為4且局數為60時,經過10000次模擬,莊贏的平均概率為74.89%、平均輸贏35.5615、最多輸157.0.

當玩家數為5且局數為60時,經過10000次模擬,莊贏的平均概率為75.67%、平均輸贏47.3386、最多輸209.0.

當玩家數為6且局數為60時,經過10000次模擬,莊贏的平均概率為75.76%、平均輸贏58.8061、最多輸265.0.

當玩家數為7且局數為60時,經過10000次模擬,莊贏的平均概率為76.94%、平均輸贏70.632、最多輸260.0.

當玩家數為8且局數為60時,經過10000次模擬,莊贏的平均概率為77.53%、平均輸贏84.0324、最多輸339.0.

當玩家數為9且局數為60時,經過10000次模擬,莊贏的平均概率為76.82%、平均輸贏94.7196、最多輸334.0.

當玩家數為10且局數為60時,經過10000次模擬,莊贏的平均概率為77.83%、平均輸贏109.4082、最多輸400.0.

當玩家數為3且局數為120時,經過10000次模擬,莊贏的平均概率為81.8%、平均輸贏47.9537、最多輸141.0.

當玩家數為4且局數為120時,經過10000次模擬,莊贏的平均概率為83.45%、平均輸贏71.8813、最多輸210.0.

當玩家數為5且局數為120時,經過10000次模擬,莊贏的平均概率為84.28999999999999%、平均輸贏96.2556、最多輸235.0.

當玩家數為6且局數為120時,經過10000次模擬,莊贏的平均概率為84.97%、平均輸贏119.3891、最多輸394.0.

當玩家數為7且局數為120時,經過10000次模擬,莊贏的平均概率為85.34%、平均輸贏142.3758、最多輸354.0.

當玩家數為8且局數為120時,經過10000次模擬,莊贏的平均概率為85.7%、平均輸贏169.3407、最多輸361.0.

當玩家數為9且局數為120時,經過10000次模擬,莊贏的平均概率為85.63%、平均輸贏189.4551、最多輸555.0.

當玩家數為10且局數為120時,經過10000次模擬,莊贏的平均概率為85.37%、平均輸贏212.9877、最多輸526.0.

當玩家數為3且局數為180時,經過10000次模擬,莊贏的平均概率為87.21%、平均輸贏72.2576、最多輸147.0.

當玩家數為4且局數為180時,經過10000次模擬,莊贏的平均概率為88.06%、平均輸贏108.2103、最多輸212.0.

當玩家數為5且局數為180時,經過10000次模擬,莊贏的平均概率為89.35%、平均輸贏142.3371、最多輸335.0.

當玩家數為6且局數為180時,經過10000次模擬,莊贏的平均概率為89.02%、平均輸贏176.5479、最多輸342.0.

當玩家數為7且局數為180時,經過10000次模擬,莊贏的平均概率為89.8%、平均輸贏213.5803、最多輸435.0.

當玩家數為8且局數為180時,經過10000次模擬,莊贏的平均概率為90.18%、平均輸贏249.577、最多輸417.0.

當玩家數為9且局數為180時,經過10000次模擬,莊贏的平均概率為90.88000000000001%、平均輸贏287.5184、最多輸613.0.

當玩家數為10且局數為180時,經過10000次模擬,莊贏的平均概率為90.52%、平均輸贏318.8327、最多輸568.0.

當玩家數為3且局數為240時,經過10000次模擬,莊贏的平均概率為89.72%、平均輸贏94.3631、最多輸176.0.

當玩家數為4且局數為240時,經過10000次模擬,莊贏的平均概率為91.83%、平均輸贏146.1417、最多輸237.0.

當玩家數為5且局數為240時,經過10000次模擬,莊贏的平均概率為91.79%、平均輸贏188.042、最多輸265.0.

當玩家數為6且局數為240時,經過10000次模擬,莊贏的平均概率為92.75%、平均輸贏236.2983、最多輸367.0.

當玩家數為7且局數為240時,經過10000次模擬,莊贏的平均概率為93.41000000000001%、平均輸贏287.2637、最多輸445.0.

當玩家數為8且局數為240時,經過10000次模擬,莊贏的平均概率為93.08999999999999%、平均輸贏331.8281、最多輸431.0.

當玩家數為9且局數為240時,經過10000次模擬,莊贏的平均概率為93.95%、平均輸贏384.8663、最多輸527.0.

當玩家數為10且局數為240時,經過10000次模擬,莊贏的平均概率為93.42%、平均輸贏425.7611、最多輸686.0.

當玩家數為3且局數為300時,經過10000次模擬,莊贏的平均概率為92.25%、平均輸贏119.3373、最多輸182.0.

當玩家數為4且局數為300時,經過10000次模擬,莊贏的平均概率為93.95%、平均輸贏177.6401、最多輸223.0.

當玩家數為5且局數為300時,經過10000次模擬,莊贏的平均概率為94.33%、平均輸贏237.6228、最多輸342.0.

當玩家數為6且局數為300時,經過10000次模擬,莊贏的平均概率為95.37%、平均輸贏298.3355、最多輸358.0.

當玩家數為7且局數為300時,經過10000次模擬,莊贏的平均概率為95.46%、平均輸贏359.8397、最多輸431.0.

當玩家數為8且局數為300時,經過10000次模擬,莊贏的平均概率為95.82000000000001%、平均輸贏419.1998、最多輸562.0.

當玩家數為9且局數為300時,經過10000次模擬,莊贏的平均概率為95.6%、平均輸贏475.8426、最多輸528.0.

當玩家數為10且局數為300時,經過10000次模擬,莊贏的平均概率為95.43%、平均輸贏535.6997、最多輸644.0.

當玩家數為3且局數為360時,經過10000次模擬,莊贏的平均概率為94.58%、平均輸贏143.9054、最多輸281.0.

當玩家數為4且局數為360時,經過10000次模擬,莊贏的平均概率為95.06%、平均輸贏214.5873、最多輸249.0.

當玩家數為5且局數為360時,經過10000次模擬,莊贏的平均概率為96.13000000000001%、平均輸贏284.2925、最多輸316.0.

當玩家數為6且局數為360時,經過10000次模擬,莊贏的平均概率為96.61999999999999%、平均輸贏358.3319、最多輸431.0.

當玩家數為7且局數為360時,經過10000次模擬,莊贏的平均概率為96.76%、平均輸贏428.8452、最多輸508.0.

當玩家數為8且局數為360時,經過10000次模擬,莊贏的平均概率為96.76%、平均輸贏497.4775、最多輸457.0.

當玩家數為9且局數為360時,經過10000次模擬,莊贏的平均概率為96.93%、平均輸贏573.3052、最多輸509.0.

當玩家數為10且局數為360時,經過10000次模擬,莊贏的平均概率為96.91%、平均輸贏640.4309、最多輸534.0.

當玩家數為3且局數為420時,經過10000次模擬,莊贏的平均概率為95.37%、平均輸贏167.5455、最多輸206.0.

當玩家數為4且局數為420時,經過10000次模擬,莊贏的平均概率為96.67999999999999%、平均輸贏251.7031、最多輸328.0.

當玩家數為5且局數為420時,經過10000次模擬,莊贏的平均概率為97.07000000000001%、平均輸贏336.361、最多輸332.0.

當玩家數為6且局數為420時,經過10000次模擬,莊贏的平均概率為97.28%、平均輸贏418.8386、最多輸375.0.

當玩家數為7且局數為420時,經過10000次模擬,莊贏的平均概率為97.6%、平均輸贏497.3985、最多輸430.0.

當玩家數為8且局數為420時,經過10000次模擬,莊贏的平均概率為98.04%、平均輸贏584.6059、最多輸471.0.

當玩家數為9且局數為420時,經過10000次模擬,莊贏的平均概率為97.97%、平均輸贏669.745、最多輸637.0.

當玩家數為10且局數為420時,經過10000次模擬,莊贏的平均概率為97.98%、平均輸贏752.0614、最多輸575.0.

當玩家數為3且局數為480時,經過10000次模擬,莊贏的平均概率為96.63000000000001%、平均輸贏192.2562、最多輸225.0.

當玩家數為4且局數為480時,經過10000次模擬,莊贏的平均概率為97.42%、平均輸贏289.2354、最多輸280.0.

當玩家數為5且局數為480時,經過10000次模擬,莊贏的平均概率為97.83%、平均輸贏382.8224、最多輸304.0.

當玩家數為6且局數為480時,經過10000次模擬,莊贏的平均概率為98.2%、平均輸贏476.5121、最多輸411.0.

當玩家數為7且局數為480時,經過10000次模擬,莊贏的平均概率為98.26%、平均輸贏570.4368、最多輸427.0.

當玩家數為8且局數為480時,經過10000次模擬,莊贏的平均概率為98.55000000000001%、平均輸贏664.7697、最多輸641.0.

當玩家數為9且局數為480時,經過10000次模擬,莊贏的平均概率為98.46000000000001%、平均輸贏763.2813、最多輸470.0.

當玩家數為10且局數為480時,經過10000次模擬,莊贏的平均概率為98.47%、平均輸贏857.6433、最多輸635.0.

當玩家數為3且局數為540時,經過10000次模擬,莊贏的平均概率為97.08%、平均輸贏215.498、最多輸190.0.

當玩家數為4且局數為540時,經過10000次模擬,莊贏的平均概率為98.06%、平均輸贏322.5979、最多輸289.0.

當玩家數為5且局數為540時,經過10000次模擬,莊贏的平均概率為98.42%、平均輸贏430.8459、最多輸307.0.

當玩家數為6且局數為540時,經過10000次模擬,莊贏的平均概率為98.53%、平均輸贏535.6848、最多輸375.0.

當玩家數為7且局數為540時,經過10000次模擬,莊贏的平均概率為98.67%、平均輸贏641.1271、最多輸451.0.

當玩家數為8且局數為540時,經過10000次模擬,莊贏的平均概率為98.78%、平均輸贏751.9006、最多輸374.0.

當玩家數為9且局數為540時,經過10000次模擬,莊贏的平均概率為98.83%、平均輸贏855.2707、最多輸569.0.

當玩家數為10且局數為540時,經過10000次模擬,莊贏的平均概率為98.86%、平均輸贏964.0856、最多輸659.0.

源代碼(Python)

import numpy as np
import random


bao = [0, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6]
nBao = [1, 1, 1, 1, 1, 1, 1, 2, 3, 4]


def judge(a, b):
    # 如果 a 是寶
    if a[0] == a[1]:
        # 如果 b 不是寶
        if b[0] != b[1]:
            return bao[a[0].astype(np.int16)]
        # 如果 b 是寶
        else:
            # 如果 a 是寶 1 (最大)
            if a[0] == 1:
                if b[0] == 1:
                    return 0
                else:
                    return bao[a[0].astype(np.int16)]
            # 如果 a 不是寶 1
            else:
                if b[0] == 1:
                    return -bao[b[0].astype(np.int16)]
                else:
                    if a[0] > b[0]:
                        return bao[a[0].astype(np.int16)]
                    elif a[0] < b[0]:
                        return -bao[b[0].astype(np.int16)]
                    else:
                        return 0
    # 如果 a 不是寶
    else:
        # 如果 b 是寶
        if b[0] == b[1]:
            return -bao[b[0].astype(np.int16)]
        # 如果 a 和 b 都不是寶,就要比點數了
        else:
            an = int((a[0] + a[1]) % 10)
            bn = int((b[0] + b[1]) % 10)
            if an == 0 & bn == 0:
                return nBao[an]
            elif an > bn:
                return nBao[an]
            elif bn > an:
                return -nBao[bn]
            else:
                return 0


class Poker:
    poker_num = 52
    pokers = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
                       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
                       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
                       1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])

    def __init__(self):
        # 隨機打亂牌組,模擬一副舊的撲克牌
        np.random.shuffle(self.pokers)

        # 洗牌
        self.shuffle()

    # 雖然 numpy 有自帶的洗牌演算法,但是為了模擬真實場景我還是采取自己撰寫的洗牌演算法
    def shuffle(self):
        # 把撲克牌組分成兩半,依次取兩部分的第一張牌組成新的撲克牌組
        new_pokers = np.zeros((52,))
        for i in range(0, self.poker_num, 2):
            new_pokers[i] = self.pokers[int(i / 2)]
            new_pokers[i + 1] = self.pokers[int((i + self.poker_num) / 2)]
        self.pokers = new_pokers
        # 隨機從撲克牌組中間抽取一定的牌放到牌堆的最上方,重復1~4次
        for time in range(random.randint(1, 4)):
            new_pokers = np.zeros((52,))
            # 將第 begin 張牌以下的 num 張牌放到最上面(不包括第 begin 張牌)
            begin = random.randint(1, self.poker_num - 1)
            num = random.randint(1, self.poker_num - begin)
            new_pokers[0:num] = self.pokers[begin:begin + num]
            new_pokers[num:num + begin] = self.pokers[0:begin]
            new_pokers[num + begin:self.poker_num] = self.pokers[begin + num:self.poker_num]
            self.pokers = new_pokers

    # 發牌(順便把廢牌重新組合后放到排撲克牌堆最下面)
    # (int) n 為玩家數
    def deal(self, n):
        old_pokers = []
        hs = []
        # 發牌
        for i in range(n):
            hs += [[self.pokers[i], self.pokers[i + n]]]
            old_pokers += [self.pokers[i]]
            old_pokers += [self.pokers[i + n]]
        # 處理廢牌
        np.random.shuffle(old_pokers)
        new_pokers = []
        new_pokers[0:self.poker_num - 2 * n] = self.pokers[2 * n:self.poker_num]
        new_pokers[self.poker_num - 2 * n:self.poker_num] = old_pokers
        self.pokers = new_pokers
        return hs

    def print(self):
        print(self.pokers)


if __name__ == '__main__':
    test_num = 10000
    for game_num in range(60, 600, 60):
        for player_num in range(3, 11):
            host_win_num = 0
            host_win_money = 0.
            host_most_loss = 0.
            for tn in range(test_num):
                poker = Poker()
                players = np.zeros(player_num)
                for gn in range(game_num):
                    poker.shuffle()
                    hands = poker.deal(player_num)
                    for i in range(1, player_num):
                        money = judge(hands[0], hands[i])
                        players[0] += money
                        players[i] -= money
                # print(f'第{tn}次模擬的輸贏情況如下:', players)
                if players[0] >= 0:
                    host_win_num += 1
                if players[0] < host_most_loss:
                    host_most_loss = players[0]
                host_win_money += players[0]
            print(f'當玩家數為{player_num}且局數為{game_num}時,經過{test_num}次模擬,莊贏的平均概率為{host_win_num/test_num*100}%、平均輸贏{host_win_money/test_num}、最多輸{-host_most_loss}.')

要想不輸,惟有不賭!

以上結果均為概率統計!

要想不輸,惟有不賭!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/261735.html

標籤:python

上一篇:leetcode_697. 陣列的度

下一篇:Python大作業實驗一

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more