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

166 lines
18 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.

帮我在写一个算法,推测前区随球。
入参有高位/中位/低位, 3个号码看好 + 5个号码上期前区 + 2个号码上期后区
高位:
(一)
取前三个号码中的第一个号码作为主球号去d5按系数从大到小排列的 表中查询,取最大值向下 11 个球号注意第11位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第10/11/12/13这四个位置的号码对应的系数相同需要选择最后的10位和11位两个号码则需要那这4个号码作为主球号去dlt_history_frontend_top_100 比较对应的系数,
如果结果是12位的系数最高其余位置的系数相同首先将12位对应的号码作为需要筛选出的11位号码的第十位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的17位号码的第十七位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位。
注意这一步取出11个球号后还需要记录这11个球号在d5表中对应的系数最后记录一个包含球号和对应的系数的map11个球号
(二)
拿第二块的5个球号也就是上期前区号码对应的5个球号分别去d9按系数从大到小排列的 表中查询,取最大值向下 30 个球号注意第30位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第29/30/31/32这四个位置的号码对应的系数相同需要选择出最后的29位和30位两个号码则需要那这4个号码作为主球号去dlt_frontend_history_top_100 比较对应的系数,
如果结果是31位的系数最高其余位置的系数相同首先将31位对应的号码作为需要筛选出的30位号码的第29位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的30位号码的第30位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位
(三)
筛选出dlt_history_frontend_top表中取平均值向上的3位球号
(四)
筛选出dlt_history_frontend_top_100表中取平均值向上的3位球号。如果第一个位置对应的系数有多个这一步也需要处理毛边
若3个号码中第一个位置对应的系数有多个需要拿这多个球号去dlt_frontend__history_top比较系数值大的号码作为最终的号码。
(五)
拿第三块的2个球号也就是上期后区号码对应的2个球号分别去d12按系数从大到小排列的 表中查询,取最大值向下 30 个球号注意第30位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第29/30/31/32这四个位置的号码对应的系数相同需要选择出最后的29位和30位两个号码则需要那这4个号码作为主球号去dlt_frontend_history_top_100 比较对应的系数,
如果结果是31位的系数最高其余位置的系数相同首先将31位对应的号码作为需要筛选出的30位号码的第29位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的30位号码的第30位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位
(六)
取第一块的3个球号。
最终最取11+5*30+3+3+2*30+3 = 230个球。
从230个备选球号中按照“累计出现最多次D5规选最大值百期排行最靠前历史排行为终裁”的阶梯原则依次取出前8个。
具体是这样的:
首先需要统计230个球号出现的次数取出出现次数最多的球号若出现次数排名前6的已经选出而第8/9/10/11对应的出现次数一样
则需要拿这四个球号分别去步骤中记录的map取出对应的系数如果没在map中出现对应的系数和则为0最后比较这四个球号对应的系数
若14位球号对应的系数最大其余相等则取第14位的球号做为8个中的第7个
此时还没有到达8个则需要那这个11/12/13号码作为球号去dlt_frontend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个11/12/13号码作为球号去dlt_frontend__historytop 比较对应的系数最终组成8个球号。
中位:
(一)
取前三个号码中的第一个号码作为主球号去d5按系数从大到小排列的 表中查询取平均值这一个球号作为主球号去d5表查询对应的所有系数的平均值离这个平均值最近且比它大的号码。和平均值向上5个球号向下5个球号共11个号球。
注意第一位和第11位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
处理下方的毛边时:
比如第10/11/12/13这四个位置的号码对应的系数相同需要选择最后的10位和11位两个号码则需要那这4个号码作为主球号去dlt_history_frontend_top_100 比较对应的系数,
如果结果是12位的系数最高其余位置的系数相同首先将12位对应的号码作为需要筛选出的11位号码的第十位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的17位号码的第十七位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位。
处理上方的毛边:
比如第1/2位和第1位向上的两个球号这四个位置的号码对应的系数相同需要筛选最后的1位和2位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
结果是第2位的系数最高其余位置的系数相同首先将2位对应的号码作为需要筛选出的11位号码的第1位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的11位号码的第2位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
注意这一步取出11个球号后还需要记录这11个球号在d5表中对应的系数最后记录一个包含球号和对应的系数的map11个球号
(二)
拿第二块的5个球号也就是上期前区号码对应的5个球号分别去d9按系数从大到小排列的 表中查询,取最大值向下 30 个球号注意第30位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第29/30/31/32这四个位置的号码对应的系数相同需要选择出最后的29位和30位两个号码则需要那这4个号码作为主球号去dlt_frontend_history_top_100 比较对应的系数,
如果结果是31位的系数最高其余位置的系数相同首先将31位对应的号码作为需要筛选出的30位号码的第29位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的30位号码的第30位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位
(三)
筛选出dlt_history_frontend_top表中取平均值向上的3位球号
(四)
筛选出dlt_history_frontend_top_100表中取平均值向上的3位球号。如果第一个位置对应的系数有多个这一步也需要处理毛边
若3个号码中第一个位置对应的系数有多个需要拿这多个球号去dlt_frontend__history_top比较系数值大的号码作为最终的号码。
(五)
拿第三块的2个球号也就是上期后区号码对应的2个球号分别去d12按系数从大到小排列的 表中查询,取最大值向下 30 个球号注意第30位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第29/30/31/32这四个位置的号码对应的系数相同需要选择出最后的29位和30位两个号码则需要那这4个号码作为主球号去dlt_frontend_history_top_100 比较对应的系数,
如果结果是31位的系数最高其余位置的系数相同首先将31位对应的号码作为需要筛选出的30位号码的第29位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的30位号码的第30位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位
(六)
取第一块的3个球号。
最终最取11+5*30+3+3+2*30+3 = 230个球。
从230个备选球号中按照“累计出现最多次D5规选最大值百期排行最靠前历史排行为终裁”的阶梯原则依次取出前8个。
具体是这样的:
首先需要统计230个球号出现的次数取出出现次数最多的球号若出现次数排名前6的已经选出而第8/9/10/11对应的出现次数一样
则需要拿这四个球号分别去步骤中记录的map取出对应的系数如果没在map中出现对应的系数和则为0最后比较这四个球号对应的系数
若14位球号对应的系数最大其余相等则取第14位的球号作为8个中的第7个
此时还没有到达8个则需要那这个11/12/13号码作为球号去dlt_frontend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个11/12/13号码作为球号去dlt_frontend__historytop 比较对应的系数最终组成8个球号。
低位:
(一)
取前三个号码中的第一个号码作为主球号去d5按系数从大到小排列的 表中查询取最小值向上第3个含第三个球至第13个共11个球。
注意第一位和第11位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
处理下方的毛边时:
比如第10/11/12/13这四个位置的号码对应的系数相同需要选择最后的10位和11位两个号码则需要那这个号码作为主球号去dlt_history_frontend_top_100 比较对应的系数,
如果结果是12位的系数最高其余位置的系数相同首先将12位对应的号码作为需要筛选出的11位号码的第十位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的17位号码的第十七位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位。
处理上方的毛边
比如第1/2位和第1位向上的两个球号这四个位置的号码对应的系数相同需要筛选最后的1位和2位两个号码则需要那这四个号码作为主球号去dlt_backend_history_top_100 表比较对应的系数,
结果是第2位的系数最高其余位置的系数相同首先将2位对应的号码作为需要筛选出的11位号码的第1位
再拿其余3个位置的号码作为主球号去 dlt_backend_history_top里比较对应的点系数去系数对应最大的一个球号作为需要筛选出的11位号码的第2位
若是经过dlt_backend_history_top比较还是无法筛选出就默认选择第一位
注意这一步取出11个球号后还需要记录这11个球号在d5表中对应的系数最后记录一个包含球号和对应的系数的map11个球号
(二)
拿第二块的5个球号也就是上期前区号码对应的5个球号分别去d9按系数从大到小排列的 表中查询,取最大值向下 30 个球号注意第30位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第29/30/31/32这四个位置的号码对应的系数相同需要选择出最后的29位和30位两个号码则需要那这4个号码作为主球号去dlt_frontend_history_top_100 比较对应的系数,
如果结果是31位的系数最高其余位置的系数相同首先将31位对应的号码作为需要筛选出的30位号码的第29位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的30位号码的第30位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位
(三)
筛选出dlt_history_frontend_top表中取平均值向上的3位球号
(四)
筛选出dlt_history_frontend_top_100表中取平均值向上的3位球号。如果第一个位置对应的系数有多个这一步也需要处理毛边
若3个号码中第一个位置对应的系数有多个需要拿这多个球号去dlt_frontend__history_top比较系数值大的号码作为最终的号码。
(五)
拿第三块的2个球号也就是上期后区号码对应的2个球号分别去d12按系数从大到小排列的 表中查询,取最大值向下 30 个球号注意第30位的号码对应的系数如果有多个则需要处理毛边
处理毛边的规则是:
* 1) 拿系数相同的号码先去dlt_frontend_history_top_100表中比较取系数高者
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出相同的号码先去dlt_frontend_history_top表比较取系数高者
* 3) 若仍无法区分,,就默认选择第一位。
比如第29/30/31/32这四个位置的号码对应的系数相同需要选择出最后的29位和30位两个号码则需要那这4个号码作为主球号去dlt_frontend_history_top_100 比较对应的系数,
如果结果是31位的系数最高其余位置的系数相同首先将31位对应的号码作为需要筛选出的30位号码的第29位
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数取系数对应最大的一个球号作为需要筛选出的30位号码的第30位
若是经过dlt_frontend_history_top比较还是无法筛选出就默认选择第一位
(六)
取第一块的3个球号。
最终最取11+5*30+3+3+2*30+3 = 230个球。
从230个备选球号中按照“累计出现最多次D5规选最大值百期排行最靠前历史排行为终裁”的阶梯原则依次取出前8个。
具体是这样的:
首先需要统计230个球号出现的次数取出出现次数最多的球号若出现次数排名前6的已经选出而第8/9/10/11对应的出现次数一样
则需要拿这四个球号分别去步骤中记录的map取出对应的系数如果没在map中出现对应的系数和则为0最后比较这四个球号对应的系数
若14位球号对应的系数最大其余相等则取第14位的球号作为8个中的第7个
此时还没有到达8个则需要那这个11/12/13号码作为球号去dlt_frontend__historytop_100 比较对应的系数,比较对应的系数;
如果还是没有筛选出则需要那这个11/12/13号码作为球号去dlt_frontend__historytop 比较对应的系数最终组成8个球号。
处理毛边的描述的表可能有问题是先dlt_frontend_history_top_100再dlt_frontend_history_top