9b9387

9b9387

如灰尘保佑的礼物

© 2024

音乐王国概率分析

如果每次抽奖都是独立事件,那就全凭运气,但是还是怀疑这个概率是个伪随机算法,所以想做个数据分析来验证一下,如果是满足条件概率,顺便还可以做一个预测模型做概率预测。

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

预测概率基本上在平均概率附近,该策略没有太大优势。

大倍率乐器出现概率预测

大倍率乐器预测,计算鼓,竖琴,萨克斯,圆号的准确率,大倍率统计样本量不足,试了几种算法得到的收益率都是负数。暂时没有足够的数据支撑结果。

根据目前数据分析得出的结论

  1. 平均概率满足官方公示的概率分布。
  2. 从出现最大间隔分析,不要追大,这里应该有一个算法会故意拉长某个乐器的出现时间,最大间隔大概为平均间隔的8倍左右。
  3. 竖琴出现后,同时押鼓和贝斯的中奖概率大约80%,因为鼓的倍数为10,这个策略的收益率最高。
  4. 圆号出现后,同时押钢琴和吉他的中奖概率约70%。
  5. 鼓出现后,同时押吉他和贝斯的中奖概率约50%,所有策略中这个收益率最低在20%左右。
  6. 萨克斯出现后,同时押小提琴和吉他的概率约56%。

另外,可以利用TensorFlow通过循环神经网络的RNN或者LSTM算法,训练AI模型进行预测,问题还是,目前数据量太小了。