《我用WPS进行抽奖号码预测》
创作者俱乐部成员
《我用WPS进行抽奖号码预测》
突发奇想,想用表格进行预测彩票抽奖号码。
我们假设抽奖号码为0~9,选择一个号码进行投注,1注2元,如果投注号码与开奖号码相同则中奖5元,如果投注号码与开奖号码不相符,则未中奖。
如果想要增加中奖几率,我的想法很简单,通过开奖历史数据,找到出现频率最少的号码,就是下一期的预测号码。
按照几率来讲,在开奖次数接近无穷多时,0~9号码中,每个号码出现的几率都是一样的,那么我们就按照历史数据中出现频率最少的号码进行购买,就能提高我们的中奖几率。
假设我们的历史开奖号码在C列,我们使用以下代码遍历C列,找出出现次数最少的数字,将它填写至G2单元格中:
Sub FindLeastFrequentNumber()
Dim rng As Range
Dim cell As Range
Dim countArr(0 To 9) As Long
Dim leastFreq As Long
Dim leastFreqNum As Long
Dim i As Long
' 设置要统计的范围为C列
Set rng = Range("C1:C" & Cells(Rows.count, "C").End(xlUp).Row)
' 统计每个数字出现的次数
For Each cell In rng
If IsNumeric(cell.Value) Then
If cell.Value >= 0 And cell.Value <= 9 Then
countArr(cell.Value) = countArr(cell.Value) + 1
End If
End If
Next cell
' 找出出现次数最少的数字
leastFreq = WorksheetFunction.Min(countArr)
For i = 0 To 9
If countArr(i) = leastFreq Then
leastFreqNum = i
Exit For
End If
Next i
' 将最少出现次数的数字填充到G2单元格中
Range("G2").Value = leastFreqNum
End Sub
从10月14日开始投注,截止10月28日,共中奖4次,即获得奖金20元;可是我们投注了15次,共花费了30元,所以实际是亏损了10元的。如果这个时候我们反应过来,其实奖金与中奖几率并不相符时,我们应该是不会再玩了的,是可以及时止损的最佳时机。
但这个时候有人告诉你,有一种必胜的投注方法,可以保证100%盈利的,你是否会很心动——马丁格尔法。这是一种通过逐渐增加投注金额来弥补之前的亏损,获取盈利的方法。
这个的原理就是,假设在开奖次数接近无穷多时,0~9号码中,每个号码出现的几率都是一样的,当我们投注历史数据中出现频率最少的号码时,我们总会中奖的。
例如,当我在10月14日开奖中,没有中奖,那么在15日投注时,我就投2注,今天当我中奖时,我就能弥补14日亏损的2元,并且还有额外8元的奖金。
这么一看,似乎确实是必胜的方法,例如10月21起,我们连续5天没有中奖,那么我们在第6天时,按照前面的方法(未中奖1注,第二天我们就投双倍注),我们已经投了1+2+4+8+16=31注,在26号时,我们就应该投注31+32=63注。
我们发现,这个方法确实有用,但需要我的投注资金足够多,我们按照一开始设想的每个号码出现的几率都是一样的,那么是1/10,如果运气很差,那么只要我坚持投注10次,也能稳赚不赔,
我需要准备的投注金额是1023注2046元,就能实现稳赚不赔了。
那么我们继续玩,更改一下代码,只要开奖结果出来,就能自动生成新的预测号码:
Sub FindLeastFrequentNumber()
Dim rng As Range
Dim cell As Range
Dim countArr(0 To 9) As Long
Dim leastFreq As Long
Dim leastFreqNum As Long
Dim i As Long
Dim lastRow As Long
' 设置要统计的范围为C列
Set rng = Range("C1:C" & Cells(Rows.count, "C").End(xlUp).Row)
' 统计每个数字出现的次数
For Each cell In rng
If IsNumeric(cell.Value) Then
If cell.Value >= 0 And cell.Value <= 9 Then
countArr(cell.Value) = countArr(cell.Value) + 1
End If
End If
Next cell
' 找出出现次数最少的数字
leastFreq = WorksheetFunction.Min(countArr)
For i = 0 To 9
If countArr(i) = leastFreq Then
leastFreqNum = i
Exit For
End If
Next i
lastRow = Cells(Rows.count, "C").End(xlUp).Row
Cells(lastRow + 1, "D").Value = leastFreqNum
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C:C")) Is Nothing Then
Application.EnableEvents = False
FindLeastFrequentNumber
Application.EnableEvents = True
End If
End Sub
可当我们继续往下玩时,我却输光了,这时才会发现,我犯了错:
“0~9号码中,每个号码出现的几率都是一样的,当我们投注历史数据中出现频率最少的号码时,我们总会中奖的”
我错误地以为,哪怕运气再差,只要我坚持投注10次,就能稳赚不赔。开奖号码也不会因为历史数据号码的频率变少,而提升出现的几率,每个号码每次出现的几率就是10%,独立的10%。所以我只是在拿钱不断地去赌这10%的几率。只要有一次投注金额高于我的本金,我就会输得精光。
其实如果一开始就能明白,投注2元只是在赌有10%的几率,得到一次本金增加1.5倍的机会,这么一想,其实并不划算,冒着损失本金的风险,只赚1.5倍的利润。
那么你们还会对抽奖感兴趣吗?
创作者俱乐部成员