【趣题分享】如何数学推导三国杀王荣吉占摸牌的期望值?(Web Premiere)

序言

这是一个很有趣的问题,所以在这个琐事缠身的期末时段笔者也要花时间跟大家分享一下这个问题的解法。

事情是这样子的,这几天跑完步刷 K e e p \rm Keep Keep时看到学校里有个兄弟每天跑完会发一条概率论题的动态,虽然笔者也已经很久不从事数学证明的工作,但是遥想当年高中也是一个执着于计算各种概率和期望的数学痴,还想大学能继续从事和数学相关的理论工作,只可惜天赋不足加上时运不济,如今已经沦落为打工人。所以莫名其妙地还是被一道题吸引到了。

我记得高三那时候课间为了消磨时间,禹含老是跟我玩石头剪刀布,本来这个游戏是纯看运气的,但是不知为何就是我输的比较多,所以总是被无情嘲讽。后来禹含为了有更好的嘲讽体验,决定在规则上让我一些,于是我们约定不算平局,他连赢三次算赢,我连赢两次算赢,如果一直没有人达到数量足够的连胜次数,游戏就一直进行下去。

于是这个问题就很有意思了,显然公平的石头剪刀布双方获胜的概率都是 1 / 2 1/2 1/2,那么在这种需要达到指定连胜次数才能获胜的设定下,双方获胜的概率又是怎么样呢?

后来笔者通过很精妙的解法,得出了一般情况下的结论:

  • 定理 1 1 1连胜模式下石头剪刀布的获胜概率):若 A , B A,B A,B两人进行石头剪刀布游戏,约定 A A A连胜 m m m局获胜, B B B连胜 n n n局获胜,且平局不会使得连胜中断,那么 A , B A,B A,B获胜的概率分别为:
    Pr ⁡ ( A  win ) = 2 n − 1 2 m + 2 n − 2 Pr ⁡ ( B  win ) = 2 m − 1 2 m + 2 n − 2 (1) \Pr(A\text{ win})=\frac{2^n-1}{2^m+2^n-2}\quad \Pr(B\text{ win})=\frac{2^m-1}{2^m+2^n-2}\tag{1} Pr(A win)=2m+2n22n1Pr(B win)=2m+2n22m1(1)

后来笔者把这个提给禹含,他并没有给出解答。然而现在禹含已经是清华大学的高材生,笔者还在野鸡大学里摸鱼,高下立判,显然刷题是没有任何毫无卵用的,自己给自己出题更是闲得蛋疼。

本文中笔者不会对 定理 1 1 1 做出证明,因为这里还只是序言部分,笔者真正想要说的是更有趣的问题,但是可以提示一下,笔者当时先证明的是 m = 2 , n = 3 m=2,n=3 m=2,n=3的情况(事实上这种情况的证明也并不平凡),然后可以利用递推归纳将结论推广到一般的 m , n m,n m,n的取值。

言归正传,现在让我们来看看这位兄弟出的是什么样的题吧😊


1 问题缘起

  • 问题 2 2 2随机采样直到变大):在 [ 0 , 1 ] [0,1] [0,1]区间上的均匀分布总体进行依次采样,若某次采样得到的随机数比前一次采样得到的随机数大,则终止采样,那么期望上一共需要采样多少次?

这个问题乍一看有点棘手,其实并不困难,有兴趣的朋友可以停下来思考一下下😀

好了笔者公布解法。这个问题应该有很多解法,这里笔者只介绍一种比较直观的方法,因为这个问题也不是本文的重点(重点当然是王荣吉占啦)。

我们考虑一个大小为 n n n的采样自 Uniform ( 0 , 1 ) \text{Uniform}(0,1) Uniform(0,1)上的随机样本,即 X 1 , X 2 , . . . , X n ∼ i . i . d . Uniform ( 0 , 1 ) X_1,X_2,...,X_n\overset{\rm i.i.d.}\sim \text{Uniform}(0,1) X1,X2,...,Xni.i.d.Uniform(0,1),这里我们不妨假定它们是从小到大排列且不存在相同的数值,即有:
X 1 < X 2 < . . . < X n (2) X_1<X_2<...<X_n\tag{2} X1<X2<...<Xn(2)
那么这 n n n个数的全排列数为 n ! n! n!,而能够使得前 n − 1 n-1 n1个数都是从大到小,第 n n n个数比第 n − 1 n-1 n1个数大的排列总数是 n − 1 n-1 n1个,它们分别是:
{ X n , X n − 1 , X n − 2 , . . . , X 5 , X 4 , X 3 , X 1 , X 2 } { X n , X n − 1 , X n − 2 , . . . , X 5 , X 4 , X 2 , X 1 , X 3 } { X n , X n − 1 , X n − 2 , . . . , X 5 , X 3 , X 2 , X 1 , X 4 } . . . { X n , X n − 2 , X n − 3 , . . . , X 4 , X 3 , X 2 , X 1 , X n − 1 } { X n − 1 , X n − 2 , X n − 3 , . . . , X 4 , X 3 , X 2 , X 1 , X n } (3) \{X_n,X_{n-1},X_{n-2},...,X_5,X_4,X_3,X_1,X_2\}\\ \{X_{n},X_{n-1},X_{n-2},...,X_5,X_4,X_2,X_1,X_3\}\\ \{X_{n},X_{n-1},X_{n-2},...,X_5,X_3,X_2,X_1,X_4\}\\ ...\\ \{X_{n},X_{n-2},X_{n-3},...,X_4,X_3,X_2,X_1,X_{n-1}\}\\ \{X_{n-1},X_{n-2},X_{n-3},...,X_4,X_3,X_2,X_1,X_{n}\}\tag{3} {Xn,Xn1,Xn2,...,X5,X4,X3,X1,X2}{Xn,Xn1,Xn2,...,X5,X4,X2,X1,X3}{Xn,Xn1,Xn2,...,X5,X3,X2,X1,X4}...{Xn,Xn2,Xn3,...,X4,X3,X2,X1,Xn1}{Xn1,Xn2,Xn3,...,X4,X3,X2,X1,Xn}(3)
显然只有式 ( 3 ) (3) (3)中的这些排列方式满足题设的采样 n n n次的设定,于是采样次数为 n n n的概率就是:
Pr ⁡ ( n ) = n − 1 n ! (4) \Pr(n)=\frac{n-1}{n!}\tag{4} Pr(n)=n!n1(4)
显然至少需要采样 2 2 2次,容易验证概率和为 1 1 1,即有:
∑ n = 2 + ∞ Pr ⁡ ( n ) = ∑ n = 2 + ∞ n − 1 n ! = ∑ n = 2 + ∞ [ 1 ( n − 1 ) ! − 1 n ! ] = 1 (5) \sum_{n=2}^{+\infty}\Pr(n)=\sum_{n=2}^{+\infty}\frac{n-1}{n!}=\sum_{n=2}^{+\infty}\left[\frac1{(n-1)!}-\frac1{n!}\right]=1\tag{5} n=2+Pr(n)=n=2+n!n1=n=2+[(n1)!1n!1]=1(5)
于是期望上需要采样的次数就是:
E = ∑ n = 2 + ∞ n Pr ⁡ ( n ) = ∑ n = 2 + ∞ n ( n − 1 ) n ! = ∑ n = 2 + ∞ 1 ( n − 2 ) ! = ∑ n = 0 + ∞ 1 n ! = e (6) \mathbb E=\sum_{n=2}^{+\infty}n\Pr(n)=\sum_{n=2}^{+\infty}\frac{n(n-1)}{n!}=\sum_{n=2}^{+\infty}\frac1{(n-2)!}=\sum_{n=0}^{+\infty}\frac1{n!}=e\tag{6} E=n=2+nPr(n)=n=2+n!n(n1)=n=2+(n2)!1=n=0+n!1=e(6)
即为自然底数 e ≈ 2.718 e\approx2.718 e2.718


2 王荣吉占摸牌期望问题

上面这个 问题 2 2 2 显然不是很困难,但是笔者很快就联想到最近三国杀新出的武将王荣,虽然笔者已经退杀很久,但是平时会看橙相的百坑讲坛,所以对新出的武将还是很了解的。这个武将有一个很厉害的技能叫作吉占,这个技能与 问题 2 2 2 有那么一点儿相似,在百坑讲坛里经常看到一个王荣突然就靠吉占摸了十几二十多张牌,那么这个吉占的摸牌期望到底是多少呢?

王荣武将牌
  • 问题 3 3 3王荣摸牌期望问题):在三国杀理想牌堆下,王荣发动吉占,约定点数不大于 7 7 7时猜大,点数不小于 8 8 8时猜小,那么期望上王荣发动吉占能够摸多少张牌?(王荣技能见上图)

事实上三国杀吧以及知乎上还是有一些人讨论过这个问题,但是笔者并没有看到任何关于吉占摸牌期望的推算结果,大多数都是使用程序模拟仿真得到的一个结果,笔者其实很早也用 P y t h o n \rm Python Python写过模拟仿真的代码(如下所示),得出的结论与网上其他人的结果大致相同,期望约为 4.29 4.29 4.29,标准差约为 2.68 2.68 2.68,这个标准差其实是一个很大的数值,所以导致王荣很容易就会突然原地起爆。

# -*- coding: utf-8 -*-
# @author: caoyang
# @email: caoyang@163.sufe.edu.cn
# 王荣摸牌仿真

import random
import numpy as np
from itertools import product, combinations

# 生成牌堆
pile = []
for i in range(1, 14):
	pile += [i] * 12
pile += [5, 5, 12, 12]

def shuffle():
	return random.shuffle(pile)
	
def simulation():
	shuffle()
	last_card = None
	result = []
	for card in pile:
		result.append(card)
		if last_card is None:
			last_card = card
		else:
			if card == last_card:
				break
			elif card > last_card and last_card <= 7:
				last_card = card
				continue
			elif card < last_card and last_card >= 8:
				last_card = card
				continue
			else:
				break
	return result

if __name__ == '__main__':
	N = 10000
	r = []
	for i in range(N):
		result = simulation()
		r.append(len(result))
	mean = np.mean(r)
	std = np.std(r)
	m = np.max(r)
	print(mean, std, m)

注意上面的代码是从理想牌堆(军争牌堆 160 160 160张牌不含木马)采样的。

事实上 问题 3 3 3 这种离散形式的求解精确解确实非常困难,因为还需要考虑两张牌点数相同的问题(此时吉占不管猜大猜小都会失败),如果还要考虑牌堆的流逝就更加困难了。笔者也做了尝试但是只能给出一个递推公式,这里不再赘述。

所以有人会去思考连续形式下的期望求解,具体如 问题 4 4 4 所述:

  • 问题 4 4 4随机数生成猜大小):在 [ 0 , 1 ] [0,1] [0,1]区间上的均匀分布总体进行依次采样,约定若采样得到的随机数小于 1 / 2 1/2 1/2,则猜测下一次采得的随机数会更大;若采样得到的随机数大于 1 / 2 1/2 1/2,则猜测下一次采得的随机数会更小;若猜测错误,则采样终止,则期望上需要猜测多少次?

目前笔者查到的一个试图推导 问题 4 4 4 精确解的帖子在https://www.zhihu.com/question/498446703,该作者通过模拟仿真得出 4.69351 4.69351 4.69351,并猜测结果可能是 e 2 / 2 + 1 e^2/2+1 e2/2+1,这个数值显然要比 问题 3 3 3 大一些,但是依然是一个具有参考意义的结果。该作者试图使用复杂的几何方法进行推导,似乎是把问题想得复杂了。

因为笔者已经求解出了 问题 4 4 4 的精确解,因此可以负责任地说 e 2 / 2 + 1 e^2/2+1 e2/2+1一定是错误的,正确的结果应该是:
1 2 e − 0.5 − 1 ≈ 4.69348449872319 (7) \frac{1}{2e^{-0.5}-1}\approx 4.69348449872319\tag{7} 2e0.5114.69348449872319(7)
下面是 问题 4 4 4 的一个仿真脚本,可用于验算这个数值的准确性:

# -*- coding: utf-8 -*-
# @author: caoyang
# @email: caoyang@163.sufe.edu.cn
# 王荣摸牌仿真: 连续型

import numpy
import random

def f():
	result = 1
	rand = random.random()
	while True:
		result += 1
		temp = random.random()
		if temp > rand and rand < .5:
			rand = temp
		elif temp <= rand and rand >= .5:
			rand = temp			
		else:
			break
	return result 

N = 10000
results = []

for i in range(N):
	result = f()
	results.append(result)
	
print(numpy.array(results, dtype=numpy.float64).mean())

问题 4 4 4 的求解比 问题 2 2 2 稍微难一些,但是也不是特别困难,有兴趣的朋友也可以思考一下再往下阅读。


3 问题 4 4 4求解

下面介绍笔者对 问题 4 4 4 结果(式 ( 7 ) (7) (7))的证明思路,这将涉及基础的概率论与微分方程的知识:

Proof \text{Proof} Proof

定义在第一次采样的随机数为 x x x的条件下( 0 ≤ x ≤ 1 0\le x\le 1 0x1),期望上的猜测次数为 E ( x ) \mathbb E(x) E(x),那么需要计算的期望次数就是:
T = ∫ 0 1 E ( x ) d x (8) T = \int_0^1\mathbb E(x)\text{d}x\tag{8} T=01E(x)dx(8)
考察 x < 1 / 2 x<1/2 x<1/2 x > 1 / 2 x>1/2 x>1/2两种情况:
E ( x ) = { x ⋅ 2 + ( 1 − x ) ⋅ [ 1 + ∫ x 1 E ( t ) d t 1 − x ] = 1 + x + ∫ x 1 E ( t ) d t if  x < 1 2 ( 1 − x ) ⋅ 2 + x ⋅ [ 1 + ∫ 0 x E ( t ) d t x ] = 2 − x + ∫ 0 x E ( t ) d t if  x > 1 2 (9) \mathbb E(x)=\left\{\begin{aligned} &x\cdot 2+(1-x)\cdot\left[1+\frac{\int_{x}^1\mathbb E(t)\text{d}t}{1-x}\right]=1+x+\int_x^1\mathbb E(t)\text{d}t&&\text{if }x<\frac12\\ &(1-x)\cdot 2+x\cdot\left[1+\frac{\int_{0}^x\mathbb E(t)\text{d}t}{x}\right]=2-x+\int_{0}^x\mathbb E(t)\text{d}t&&\text{if }x>\frac12 \end{aligned}\right.\tag{9} E(x)=x2+(1x)[1+1xx1E(t)dt]=1+x+x1E(t)dt(1x)2+x[1+x0xE(t)dt]=2x+0xE(t)dtif x<21if x>21(9)
以式 ( 9 ) (9) (9) x < 1 / 2 x<1/2 x<1/2的情况为例( x > 1 / 2 x>1/2 x>1/2的情况类似):

  • x x x的概率下一次采样比 x x x还要小,此时就会猜测错误,因此猜测次数为 2 2 2
  • 1 − x 1-x 1x的概率下一次采样比 x x x要大,此时猜测会正确,期望猜测次数就是中括号内的形式(思考),这本质是一个条件期望形式;

由于式 ( 9 ) (9) (9)中的 E ( x ) \mathbb E(x) E(x)由两段构成,我们用不同的函数标记它:
E ( x ) = { f ( x ) if  x < 1 2 g ( x ) if  x > 1 2 (10) \mathbb E(x)=\left\{\begin{aligned} &f(x)&&\text{if }x<\frac12\\ &g(x)&&\text{if }x>\frac12 \end{aligned}\right.\tag{10} E(x)=f(x)g(x)if x<21if x>21(10)
其实很容易能够想得到, E ( x ) \mathbb E(x) E(x)是关于 x = 1 / 2 x=1/2 x=1/2对称的(因为 x x x很大与 x x x很小本质上没有区别,只要我第一次猜小或猜大就能抵消掉了)。因此必然有:
f ( x ) = g ( 1 − x ) 0 ≤ x < 1 2 (11) f(x)=g(1-x)\quad 0\le x<\frac12\tag{11} f(x)=g(1x)0x<21(11)
进一步地根据 E ( x ) \mathbb E(x) E(x)的对称性,可得积分面积相同,即有:
S 1 = ∫ 0 1 / 2 E ( x ) d x = ∫ 0 1 / 2 f ( x ) d x S 2 = ∫ 1 / 2 1 E ( x ) d x = ∫ 1 / 2 1 g ( x ) d x } ⇒ S 1 = S 2 = S (12) \left.\begin{aligned} S_1&=\int_0^{1/2}\mathbb E(x)\text{d}x=\int_0^{1/2}f(x)\text{d}x\\ S_2&=\int_{1/2}^1\mathbb E(x)\text{d}x=\int_{1/2}^1g(x)\text{d}x \end{aligned}\right\}\Rightarrow S_1=S_2=S\tag{12} S1S2=01/2E(x)dx=01/2f(x)dx=1/21E(x)dx=1/21g(x)dxS1=S2=S(12)

根据下图可以更好的理解上面的对称性:

在这里插入图片描述

于是我们可以把式 ( 9 ) (9) (9)中的积分改写成分段形式:
{ f ( x ) = 1 + x + ∫ 1 / 2 1 g ( t ) d t + ∫ x 1 / 2 f ( t ) d t if  x < 1 2 g ( x ) = 2 − x + ∫ 0 1 / 2 f ( t ) d t + ∫ 1 / 2 x g ( t ) d t if  x > 1 2 (13) \left\{\begin{aligned} f(x)=&1+x+\int_{1/2}^1g(t)\text{d}t+\int_{x}^{1/2}f(t)\text{d}t&&\text{if }x<\frac12\\ g(x)=&2-x+\int_{0}^{1/2}f(t)\text{d}t+\int_{1/2}^xg(t)\text{d}t&&\text{if }x>\frac12 \end{aligned}\right.\tag{13} f(x)=g(x)=1+x+1/21g(t)dt+x1/2f(t)dt2x+01/2f(t)dt+1/2xg(t)dtif x<21if x>21(13)
因为 f ( x ) f(x) f(x) g ( x ) g(x) g(x)其实是可以互相转换的,因此我们只需要式 ( 13 ) (13) (13)的某一行即可求解结果,不妨使用第一行,即:
f ( x ) = 1 + x + ∫ 1 / 2 1 g ( t ) d t + ∫ x 1 / 2 f ( t ) d t = 1 + x + S 2 + ∫ x 1 / 2 f ( t ) d x (14) f(x)=1+x+\int_{1/2}^1g(t)\text{d}t+\int_{x}^{1/2}f(t)\text{d}t=1+x+S_2+\int_{x}^{1/2}f(t)\text{d}x\tag{14} f(x)=1+x+1/21g(t)dt+x1/2f(t)dt=1+x+S2+x1/2f(t)dx(14)
假设 f ( x ) f(x) f(x)的原函数为 F ( x ) F(x) F(x),则可得:
S 2 = S 1 = ∫ 0 1 / 2 f ( x ) d x = F ( 1 / 2 ) − F ( 0 ) ∫ x 1 / 2 f ( t ) d x = F ( 1 / 2 ) − F ( x ) (15) S_2=S_1=\int_{0}^{1/2}f(x)\text{d}x=F(1/2)-F(0)\quad \int_{x}^{1/2}f(t)\text{d}x=F(1/2)-F(x)\tag{15} S2=S1=01/2f(x)dx=F(1/2)F(0)x1/2f(t)dx=F(1/2)F(x)(15)
将式 ( 15 ) (15) (15)代入到式 ( 14 ) (14) (14)中可得:
f ( x ) = 1 + x + F ( 1 / 2 ) − F ( 0 ) + F ( 1 / 2 ) − F ( x ) = [ 1 + 2 F ( 1 / 2 ) − F ( 0 ) ] + x − F ( x ) (16) f(x)=1+x+F(1/2)-F(0)+F(1/2)-F(x)=[1+2F(1/2)-F(0)]+x-F(x)\tag{16} f(x)=1+x+F(1/2)F(0)+F(1/2)F(x)=[1+2F(1/2)F(0)]+xF(x)(16)
( 16 ) (16) (16)中中括号内的内容都是常数,于是这就是一个常微分方程,设 y = F ( x ) y=F(x) y=F(x),则 y ′ = f ( x ) y'=f(x) y=f(x),我们有

y ′ = [ 1 + 2 F ( 1 / 2 ) − F ( 0 ) ] + x − y (17) y'=[1+2F(1/2)-F(0)]+x-y\tag{17} y=[1+2F(1/2)F(0)]+xy(17)

对式 ( 17 ) (17) (17)两边求两阶导,可以转换为齐次的常微分方程:
y ′ ′ ′ + y ′ ′ = 0 (18) y'''+y''=0\tag{18} y+y=0(18)
易得特征方程 r 2 + r = 0 r^2+r=0 r2+r=0的根为 r 1 = 0 r_1=0 r1=0 r 2 = − 1 r_2=-1 r2=1,因此式 ( 18 ) (18) (18)的通解为:
y ′ = C 1 + C 2 e − x (19) y'=C_1+C_2e^{-x}\tag{19} y=C1+C2ex(19)
于是可得:
f ( x ) = y ′ = C 1 + C 2 e − x F ( x ) = C 1 x − C 2 e − x + C 3 (20) f(x)=y'=C_1+C_2e^{-x}\quad F(x)=C_1x-C_2e^{-x}+C_3\tag{20} f(x)=y=C1+C2exF(x)=C1xC2ex+C3(20)
此处 C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3都是常数,接下来就是要求解这三个常数的具体值。

将式 ( 20 ) (20) (20)的结果代回到式 ( 16 ) (16) (16),可得:
C 1 + C 2 e − x = 1 + x + ( 1 2 C 1 + ( 1 − e − 0.5 ) C 2 ) + ( 1 2 C 1 − e − 0.5 C 2 + C 3 ) − ( C 1 x − C 2 e − x + C 3 ) (21) C_1+C_2e^{-x}=1+x+\left(\frac12C_1+(1-e^{-0.5})C_2\right)+\left(\frac12C_1-e^{-0.5}C_2+C_3\right)-(C_1x-C_2e^{-x}+C_3)\tag{21} C1+C2ex=1+x+(21C1+(1e0.5)C2)+(21C1e0.5C2+C3)(C1xC2ex+C3)(21)
化简可得:
C 1 = 1 + ( 1 − C 1 ) x + ( C 1 + ( 1 − 2 e − 0.5 ) C 2 ) (22) C_1=1+(1-C_1)x+(C_1+(1-2e^{-0.5})C_2)\tag{22} C1=1+(1C1)x+(C1+(12e0.5)C2)(22)
显然 C 1 = 1 C_1=1 C1=1,代入后可得 C 2 = 1 / ( 2 e − 0.5 − 1 ) C_2=1/(2e^{-0.5}-1) C2=1/(2e0.51),于是我们得到了 f ( x ) f(x) f(x) F ( x ) F(x) F(x)的解析表达式:
f ( x ) = 1 + e − x 2 e − 0.5 − 1 F ( x ) = x − e − x 2 e − 0.5 − 1 + C 3 (23) \begin{aligned} f(x)&=1+\frac{e^{-x}}{2e^{-0.5}-1}\\ F(x)&=x-\frac{e^{-x}}{2e^{-0.5}-1}+C_3 \end{aligned}\tag{23} f(x)F(x)=1+2e0.51ex=x2e0.51ex+C3(23)
注意到式 ( 8 ) (8) (8)的期望值 T T T是式 ( 12 ) (12) (12)中积分面积 S S S的两倍,于是有:
T = 2 S = 2 [ F ( 1 / 2 ) − F ( 0 ) ] = 1 + 2 − 2 e − 0.5 2 e − 0.5 − 1 = 1 2 e − 0.5 − 1 ≈ 4.69348449872319 (24) T=2S=2[F(1/2)-F(0)]=1+\frac{2-2e^{-0.5}}{2e^{-0.5}-1}=\frac{1}{2e^{-0.5}-1}\approx 4.69348449872319\tag{24} T=2S=2[F(1/2)F(0)]=1+2e0.5122e0.5=2e0.5114.69348449872319(24)

命题得证。

Q.E.D. ■ \text{Q.E.D.}\blacksquare Q.E.D.


4 后记

虽然数学证明对于现在的工作的确意义不大,但是偶尔活跃一下脑筋也是极好的。随着年岁的增长写博客的时间越来越少,上个月只发了一篇博客,今晚难得有激情,十点半回来开始写,一直写到十二点多,又找到了年轻时的那种热情。

这样很好!笔者上周六队内测试场地 5000 5000 5000米跑出 19 19 19 59 59 59 73 73 73,首次打开 20 20 20分钟,这对笔者从前一个体育废柴来说是极为不可思议的事情,很多事情都是这样,会有无限可能,不要自我设限,大胆地去尝试就好!

研路漫漫,愿以此与诸君共勉!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值