184 lines
20 KiB
Plaintext
184 lines
20 KiB
Plaintext
帮我在写一个算法,推测后区首球。
|
||
入参有高位/中位/低位, 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个球号。
|
||
|
||
|
||
|