如果每次抽奖都是独立事件,那就全凭运气,但是还是怀疑这个概率是个伪随机算法,所以想做个数据分析来验证一下,如果是满足条件概率,顺便还可以做一个预测模型做概率预测。
1. 数据采集
手动收集了某日从08:56到21:01分,总计750个样本,作为分析数据。这个样本量有点小,高倍乐器的数据量不足可能会影响概率结果。
对每个乐器建立索引分别对应下表:
钢琴 | 小提琴 | 吉他 | 贝斯 | 架子鼓 | 竖琴 | 萨克斯 | 圆号 |
---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
采集的数据如下:
string train_data =
"33532342142721722212423321124142234123333512344541" +
"21112352422422317113881141413282354135244123227324" +
"48141331221744415652444311183344348332123534455221" +
"27437372242414521147121435231144333411653431333332" +
"64344141834531175316514354512433115633251324541231" +
"21124244113323311335471353253735153222125443382724" +
"14232342413173243233243314253217542331711114335464" +
"81121881555344223322434714485654143353123826568342" +
"26412344245131625848132424143434651112111434224541" +
"32133451211112121122133331754553211142442464111421" +
"34362353324541424135751233411511814136542447221383" +
"42515451111222123556722213724344773832242543831222" +
"21432526173333454321531657623414142233341421815411" +
"32635436114244251135452133722343211431531437231133" +
"11241253113334224433424144522332235734332415447215" ;
另外收集了隔日09:14到10:54的数据作为第一组测试数据
string test_data1 =
"14554231121368122862212244241325324662423234122141" +
"54142322534283234132134411734242331614241321162433" ;
收集了隔日14:24到16:04的数据作为第二组测试数据
string test_data2 =
"13322833342564143143311321372425183314445211427435" +
"3524341326325212411256431274151551314512414843353116";
该两组测试数据用来验证预测模型的准确率。
2. 数据分析
对采集到的数据做分析:
- 每种乐器出现概率
钢琴 | 小提琴 | 吉他 | 贝斯 | 架子鼓 | 竖琴 | 萨克斯 | 圆号 | |
---|---|---|---|---|---|---|---|---|
索引值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
采样数据概率 | 0.20933333 | 0.192 | 0.21333334 | 0.192 | 0.097333334 | 0.028 | 0.04 | 0.028 |
官方公示概率 | 0.2 | 0.2 | 0.2 | 0.2 | 0.091 | 0.046 | 0.037 | 0.026 |
官方公示倍率(普通) | 5 | 5 | 5 | 5 | 10 | 20 | 25 | 35 |
官方公示倍率(加倍) | 5 | 5 | 5 | 5 | 10 | 30 | 40 | 50 |
分析概率与官方公示的概率大概一致,但是之前提到的原因,样本量太小,导致竖琴的出现概率出现较大的偏差。
- 每种乐器出现的最小/大间隔与平均间隔
钢琴 | 小提琴 | 吉他 | 贝斯 | 架子鼓 | 竖琴 | 萨克斯 | 圆号 | |
---|---|---|---|---|---|---|---|---|
索引值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
最小间隔 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
最大间隔 | 21 | 28 | 18 | 22 | 38 | 117 | 102 | 112 |
平均间隔 | 3.771 | 4.194 | 3.625 | 4.181 | 9.274 | 30.333 | 23.9 | 29.714 |
间隔的方差差距很大,从这个结果看,算法如果是独立事件做预测可能没什么戏了。另外,测试数据中出现了66
可以知道竖琴的最小间隔其实也0。
- 每种乐器下一个出现乐器的概率分布(行表示下一个出现的乐器概率)
钢琴 | 小提琴 | 吉他 | 贝斯 | 架子鼓 | 竖琴 | 萨克斯 | 圆号 | |
---|---|---|---|---|---|---|---|---|
索引值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
钢琴 | 0.27388534 | 0.1910828 | 0.15923567 | 0.1910828 | 0.070063695 | 0.025477707 | 0.05732484 | 0.031847134 |
小提琴 | 0.21527778 | 0.20833333 | 0.2013889 | 0.2361111 | 0.06944445 | 0.034722224 | 0.027777778 | 0.0069444445 |
吉他 | 0.14375 | 0.18125 | 0.275 | 0.1875 | 0.11875 | 0.01875 | 0.0375 | 0.0375 |
贝斯 | 0.22916667 | 0.20833333 | 0.2013889 | 0.15972222 | 0.104166664 | 0.020833334 | 0.041666668 | 0.034722224 |
架子鼓 | 0.18055555 | 0.125 | 0.22222222 | 0.2777778 | 0.06944445 | 0.06944445 | 0.041666668 | 0.013888889 |
竖琴 | 0.0952381 | 0.14285715 | 0.0952381 | 0.1904762 | 0.3809524 | 0 | 0.04761905 | 0.04761905 |
萨克斯 | 0.16666667 | 0.33333334 | 0.23333333 | 0.06666667 | 0.13333334 | 0.033333335 | 0.033333335 | 0 |
圆号 | 0.33333334 | 0.14285715 | 0.33333334 | 0.04761905 | 0.04761905 | 0 | 0 | 0.0952381 |
虽然样本量很小,但这个表展示的数据,每个乐器的下一个出现概率不是按照平均概率出现。同理统计了每个乐器之后第2,3,4,5个出现的乐器的概率。
预测策略
小倍率乐器出现概率预测
P(next) = P(pre1) * P(pre2) * … * P(preN) N表示概率项个数,用前N项的概率预测下一个出现的乐器概率。但是由于基础概率不同,排名前面的一定是钢琴,小提琴,吉他和贝斯。大倍率的乐器预测不在此策略中实现。
用分析出来的数据跑一遍测试数据,测一下正确率和收益率。
第一组测试数据:
竞猜次数 | 猜中次数 | 正确率 | 花费 | 收益 | 收益率 | |
---|---|---|---|---|---|---|
单压(N=2) | 100 | 18 | 0.18 | 200 | 180 | -0.100000024 |
单压(N=3) | 99 | 18 | 0.18181819 | 198 | 180 | -0.090909064 |
单压(N=4) | 98 | 19 | 0.19387755 | 196 | 190 | -0.03061223 |
单压(N=5) | 97 | 22 | 0.22680412 | 194 | 220 | 0.13402057 |
双压(N=2) | 101 | 36 | 0.35643566 | 404 | 360 | -0.10891092 |
双压(N=3) | 100 | 39 | 0.39 | 400 | 390 | -0.024999976 |
双压(N=4) | 99 | 48 | 0.4848485 | 396 | 480 | 0.21212125 |
双压(N=5) | 98 | 38 | 0.3877551 | 392 | 380 | -0.03061223 |
第二组测试数据:
竞猜次数 | 猜中次数 | 正确率 | 花费 | 收益 | 收益率 | |
---|---|---|---|---|---|---|
单压(N=2) | 100 | 17 | 0.17 | 200 | 170 | -0.14999998 |
单压(N=3) | 99 | 22 | 0.22222222 | 198 | 220 | 0.111111164 |
单压(N=4) | 98 | 20 | 0.20408164 | 196 | 200 | 0.020408154 |
单压(N=5) | 97 | 17 | 0.17525773 | 194 | 170 | -0.12371135 |
双压(N=2) | 101 | 36 | 0.35643566 | 404 | 360 | -0.10891092 |
双压(N=3) | 100 | 41 | 0.41 | 400 | 410 | 0.024999976 |
双压(N=4) | 99 | 41 | 0.41414142 | 396 | 410 | 0.03535354 |
双压(N=5) | 98 | 40 | 0.40816328 | 392 | 400 | 0.020408154 |
预测概率基本上在平均概率附近,该策略没有太大优势。
大倍率乐器出现概率预测
大倍率乐器预测,计算鼓,竖琴,萨克斯,圆号的准确率,大倍率统计样本量不足,试了几种算法得到的收益率都是负数。暂时没有足够的数据支撑结果。
根据目前数据分析得出的结论
- 平均概率满足官方公示的概率分布。
- 从出现最大间隔分析,不要追大,这里应该有一个算法会故意拉长某个乐器的出现时间,最大间隔大概为平均间隔的8倍左右。
- 竖琴出现后,同时押鼓和贝斯的中奖概率大约80%,因为鼓的倍数为10,这个策略的收益率最高。
- 圆号出现后,同时押钢琴和吉他的中奖概率约70%。
- 鼓出现后,同时押吉他和贝斯的中奖概率约50%,所有策略中这个收益率最低在20%左右。
- 萨克斯出现后,同时押小提琴和吉他的概率约56%。
另外,可以利用TensorFlow通过循环神经网络的RNN或者LSTM算法,训练AI模型进行预测,问题还是,目前数据量太小了。