166 lines
18 KiB
Plaintext
166 lines
18 KiB
Plaintext
帮我在写一个算法,推测前区随球。
|
||
入参有高位/中位/低位, 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表中对应的系数,最后记录一个包含球号和对应的系数的map(11个球号)。
|
||
(二)
|
||
拿第二块的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表中对应的系数,最后记录一个包含球号和对应的系数的map(11个球号)。
|
||
(二)
|
||
拿第二块的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表中对应的系数,最后记录一个包含球号和对应的系数的map(11个球号)。
|
||
(二)
|
||
拿第二块的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
|