Files
cpzs-backend/算法第三步 -.txt

165 lines
17 KiB
Plaintext
Raw Normal View History

2025-11-04 17:18:21 +08:00
帮我在写一个算法,推测后区首球。
入参有高位/中位/低位, 5个号码下期前区+ 5个号码上期前区 + 2个号码上期后区+ 2个号码下期后区
高位:
1
先拿第一段的5个号码下期前区分别去d6表按系数从大到小排列作为主球号查询取最大值向下5个号码注意第5个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第4/5/6/7这四个位置的号码对应的系数相同需要选择最后的4位和5位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是5位的系数最高其余位置的系数相同首先将5位对应的号码作为需要筛选出的5位号码的第4位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的5位号码的第5位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
注意这一步取出5个球号后还需要记录这5个球号在d6表中对应的系数最后记录一个包含球号和对应的系数的map。最后组成25个球号的map.
2
拿第二段的5个球号上期前区分别去D10按系数从大到小排列作为主球号查询取最大值向下10个号码注意第10个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第9/10/11/12这四个位置的号码对应的系数相同需要选择最后的9位和10位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是第11位的系数最高其余位置的系数相同首先将11位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
3
筛选出dlt_history_backend_top表中取最大值向下的2位球号
4
筛选出dlt_history_backend_top_100表中取最大值向下的2位球号,注意这个也需要处理毛边。
比如第2/3/4这四个位置的号码对应的系数相同再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的系数
取系数对应最大的一个球号作为需要筛选出的2位号码的第2位
5
拿第三段的2个球号上期后区分别去D11按系数从大到小排列作为主球号查询取最大值向下10个号码注意第10个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第9/10/11/12这四个位置的号码对应的系数相同需要选择最后的9位和10位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是第11位的系数最高其余位置的系数相同首先将11位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位。
6
取拿第四段的2个球号下期后区
最终组成5*5 + 5*10 + 2 + 2 + 2*10 + 2 = 101个球号。
从101个备选球中按照“累计出现最多次D6系数最大和百期排行最靠前历史排行为终裁”的阶梯原则依次取出前4个。
具体是这样的:
首先需要统计101个球号出现的次数取出出现次数最多的球号若出现次数排名前2的已经选出而第3/4/5/6对应的出现次数一样
则需要拿这四个球号分别去1中记录的map取出对应的系数因为1个球号在map中可能有有多个需要记录系数和如果1次都没出现对应的系数和则为0最后比较这个球号对应的系数和
若4位球号对应的系数和最大其余相等则取第4位的球号作为最后需要选出4个中的第3个
此时还没有到达4个则需要那这个3/5/6位的号码作为球号去dlt_backend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个3/5/6号码作为球号去dlt_backend_historytop 比较对应的系数最终组成4个球号。
中位:
1
先拿第一段的5个号码下期前区分别去d6表按系数从大到小排列作为主球号查询取平均值这一个球号作为主球号去d5表查询对应的所有系数的平均值离这个平均值最近且比它大的号码。
和平均值向上2个球号向下2个球号共5个号球。
注意第一位和第五位的号码对应的系数如果有多个,则需要处理毛边,
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
处理上方的毛边时(第一位):
比如第1/2位和第1位向上的两个球号的这四个位置的号码对应的系数相同需要选择最后的第1位和2位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是2位的系数最高其余位置的系数相同首先将2位对应的号码作为需要筛选出的2位号码的第1位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的2位号码的第2位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
处理下方的毛边时
比如第4/5/6/7这四个位置的号码对应的系数相同需要选择最后的4位和5位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是5位的系数最高其余位置的系数相同首先将5位对应的号码作为需要筛选出的5位号码的第4位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的5位号码的第5位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
注意这一步取出5个球号后还需要记录这5个球号在d6表中对应的系数最后记录一个包含球号和对应的系数的map。最后组成25个球号的map.
2
拿第二段的5个球号上期前区分别去D10按系数从大到小排列作为主球号查询取最大值向下10个号码注意第10个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第9/10/11/12这四个位置的号码对应的系数相同需要选择最后的9位和10位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是第11位的系数最高其余位置的系数相同首先将11位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
3
筛选出dlt_history_backend_top表中取最大值向下的2位球号
4
筛选出dlt_history_backend_top_100表中取最大值向下的2位球号,注意这个也需要处理毛边。
比如第2/3/4这四个位置的号码对应的系数相同再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的系数
取系数对应最大的一个球号作为需要筛选出的2位号码的第2位
5
拿第三段的2个球号上期后区分别去D11按系数从大到小排列作为主球号查询取最大值向下10个号码注意第10个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第9/10/11/12这四个位置的号码对应的系数相同需要选择最后的9位和10位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是第11位的系数最高其余位置的系数相同首先将11位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位。
6
取拿第四段的2个球号下期后区
最终组成5*5 + 5*10 + 2 + 2 + 2*10 + 2 = 101个球号。
从101个备选球中按照“累计出现最多次D6系数最大和百期排行最靠前历史排行为终裁”的阶梯原则依次取出前4个。
具体是这样的:
首先需要统计101个球号出现的次数取出出现次数最多的球号若出现次数排名前2的已经选出而第3/4/5/6对应的出现次数一样
则需要拿这四个球号分别去1中记录的map取出对应的系数因为1个球号在map中可能有有多个需要记录系数和如果1次都没出现对应的系数和则为0最后比较这个球号对应的系数和
若4位球号对应的系数和最大其余相等则取第4位的球号作为最后需要选出4个中的第3个
此时还没有到达4个则需要那这个3/5/6位的号码作为球号去dlt_backend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个3/5/6号码作为球号去dlt_backend_historytop 比较对应的系数最终组成4个球号。
低位:
1
先拿第一段的5个号码下期前区分别去d6表按系数从大到小排列作为主球号查询取最小值向上5个号码注意第1个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第1/2位和第1位向上的两个球号这四个位置的号码对应的系数相同需要筛选最后的1位和2位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
结果是第2位的系数最高其余位置的系数相同首先将2位对应的号码作为需要筛选出的5位号码的第1位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的5位号码的第2位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
注意这一步取出5个球号后还需要记录这5个球号在d6表中对应的系数最后记录一个包含球号和对应的系数的map。最后组成25个球号的map.
2
拿第二段的5个球号上期前区分别去D10按系数从大到小排列作为主球号查询取最大值向下10个号码注意第10个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第9/10/11/12这四个位置的号码对应的系数相同需要选择最后的9位和10位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是第11位的系数最高其余位置的系数相同首先将11位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
3
筛选出dlt_history_backend_top表中取最大值向下的2位球号
4
筛选出dlt_history_backend_top_100表中取最大值向下的2位球号,注意这个也需要处理毛边。
比如第2/3/4这四个位置的号码对应的系数相同再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的系数
取系数对应最大的一个球号作为需要筛选出的2位号码的第2位
5
拿第三段的2个球号上期后区分别去D11按系数从大到小排列作为主球号查询取最大值向下10个号码注意第10个号码对应的系数如果有多个话需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_backend__history_top_100 表中比较,取系数高者
* 2) 若经过dlt_backend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,就默认选择第一位
比如第9/10/11/12这四个位置的号码对应的系数相同需要选择最后的9位和10位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
如果结果是第11位的系数最高其余位置的系数相同首先将11位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位。
6
取拿第四段的2个球号下期后区
最终组成5*5 + 5*10 + 2 + 2 + 2*10 + 2 = 101个球号。
从101个备选球中按照“累计出现最多次D6系数最大和百期排行最靠前历史排行为终裁”的阶梯原则依次取出前4个。
具体是这样的:
首先需要统计101个球号出现的次数取出出现次数最多的球号若出现次数排名前2的已经选出而第3/4/5/6对应的出现次数一样
则需要拿这四个球号分别去1中记录的map取出对应的系数因为1个球号在map中可能有有多个需要记录系数和如果1次都没出现对应的系数和则为0最后比较这个球号对应的系数和
若4位球号对应的系数和最大其余相等则取第4位的球号作为最后需要选出4个中的第3个
此时还没有到达4个则需要那这个3/5/6位的号码作为球号去dlt_backend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个3/5/6号码作为球号去dlt_backend_historytop 比较对应的系数最终组成4个球号。