Files
cpzs-backend/算法第四步.txt
2025-11-04 17:18:21 +08:00

184 lines
20 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

帮我在写一个算法,推测后区首球。
入参有高位/中位/低位, 1个号码后区首球+ 5个号码下期前区+ 5个号码上期前区 + 2个号码上期后区
高位:
1
先拿第一段的1个号码后区首球分别去d7表按系数从大到小排列作为主球号查询取最大值向下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个球号在d7表中对应的系数最后记录一个包含球号和对应的系数的map。最后组成5个球号的map.
2
拿第二段的5个号码下期前区分别去d6表按系数从大到小排列作为主球号查询取最大值向下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 表比较对应的系数,
如果结果是10位的系数最高其余位置的系数相同首先将10位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
3
拿第三段的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 表比较对应的系数,
如果结果是10位的系数最高其余位置的系数相同首先将10位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
4
拿第四段的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比较还是无法筛选出就默认选择第一位。
5
筛选出dlt_backend_history_top表中取平均值向上的2位球号平均值是dlt_backend_history_top表中系数的平均值。
6
筛选出dlt_backend_history_top_100表中取平均值向上的2位球号平均值是dlt_backend_history_top_100表中系数的平均值。
如果第一位球号对应的系数有多个话则需要拿这些相同系数的球号去dlt_backend_history_top_100表比较最终取2位球号。
最终组成 5 +5*10 + 5*10 + 2*10 + 2 +2 = 129个球号。
从129个备选球中按照“累计出现最多次D7规选最大值百期排行最靠前历史排行为终裁”的阶梯原则依次取出前3个。
具体是这样的:
首先需要统计129个球号出现的次数取出出现次数最多的球号若出现次数排名前1的已经选出而第3/4/5/6对应的出现次数一样
则需要拿这四个球号分别去步骤中记录的map取出对应的系数如果没在map中出现对应的系数和则为0最后比较这四个球号对应的系数
若第4位球号对应的系数和最大其余相等则取第4位的球号作为最后需要选出3个中的第2个
此时还没有到达3个则需要那这个3/5/6位的号码作为球号去dlt_backend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个3/5/6号码作为球号去dlt_backend_historytop 比较对应的系数最终组成3个球号。
中位:
1
先拿第一段的1个号码后区首球分别去d7表按系数从大到小排列作为主球号查询取平均值这一个球号作为主球号去d5表查询对应的所有系数的平均值离这个平均值最近且比它大的号码。
和平均值向上2个球号向下2个球号共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比较还是无法筛选出就默认选择第一位
向上处理时:
比如第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个球号在d7表中对应的系数最后记录一个包含球号和对应的系数的map。最后组成5个球号的map.
2
拿第二段的5个号码下期前区分别去d6表按系数从大到小排列作为主球号查询取最大值向下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 表比较对应的系数,
如果结果是10位的系数最高其余位置的系数相同首先将10位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
3
拿第三段的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 表比较对应的系数,
如果结果是10位的系数最高其余位置的系数相同首先将10位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
4
拿第四段的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比较还是无法筛选出就默认选择第一位。
5
筛选出dlt_backend_history_top表中取平均值向上的2位球号平均值是dlt_backend_history_top表中系数的平均值。
6
筛选出dlt_backend_history_top_100表中取平均值向上的2位球号平均值是dlt_backend_history_top_100表中系数的平均值。
如果第一位球号对应的系数有多个话则需要拿这些相同系数的球号去dlt_backend_history_top_100表比较最终取2位球号。
最终组成 5 +5*10 + 5*10 + 2*10 + 2 +2 = 129个球号。
从129个备选球中按照“累计出现最多次D7规选最大值百期排行最靠前历史排行为终裁”的阶梯原则依次取出前3个。
具体是这样的:
首先需要统计129个球号出现的次数取出出现次数最多的球号若出现次数排名前1的已经选出而第3/4/5/6对应的出现次数一样
则需要拿这四个球号分别去步骤中记录的map取出对应的系数如果没在map中出现对应的系数和则为0最后比较这四个球号对应的系数
若第4位球号对应的系数和最大其余相等则取第4位的球号作为最后需要选出3个中的第2个
此时还没有到达3个则需要那这个3/5/6位的号码作为球号去dlt_backend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个3/5/6号码作为球号去dlt_backend_historytop 比较对应的系数最终组成3个球号。
低位:
1
先拿第一段的1个号码后区首球分别去d7表按系数从大到小排列作为主球号查询取最小值向上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个球号在d7表中对应的系数最后记录一个包含球号和对应的系数的map。最后组成5个球号的map.
2
拿第二段的5个号码下期前区分别去d6表按系数从大到小排列作为主球号查询取最大值向下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 表比较对应的系数,
如果结果是10位的系数最高其余位置的系数相同首先将10位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
3
拿第三段的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 表比较对应的系数,
如果结果是10位的系数最高其余位置的系数相同首先将10位对应的号码作为需要筛选出的10位号码的第9位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的10位号码的第10位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
4
拿第四段的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比较还是无法筛选出就默认选择第一位。
5
筛选出dlt_backend_history_top表中取平均值向上的2位球号平均值是dlt_backend_history_top表中系数的平均值。
6
筛选出dlt_backend_history_top_100表中取平均值向上的2位球号平均值是dlt_backend_history_top_100表中系数的平均值。
如果第一位球号对应的系数有多个话则需要拿这些相同系数的球号去dlt_backend_history_top_100表比较最终取2位球号。
最终组成 5 +5*10 + 5*10 + 2*10 + 2 +2 = 129个球号。
从129个备选球中按照“累计出现最多次D7规选最大值百期排行最靠前历史排行为终裁”的阶梯原则依次取出前3个。
具体是这样的:
首先需要统计129个球号出现的次数取出出现次数最多的球号若出现次数排名前1的已经选出而第3/4/5/6对应的出现次数一样
则需要拿这四个球号分别去步骤中记录的map取出对应的系数如果没在map中出现对应的系数和则为0最后比较这四个球号对应的系数
若第4位球号对应的系数和最大其余相等则取第4位的球号作为最后需要选出3个中的第2个
此时还没有到达3个则需要那这个3/5/6位的号码作为球号去dlt_backend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个3/5/6号码作为球号去dlt_backend_historytop 比较对应的系数最终组成3个球号。