129 lines
14 KiB
Plaintext
129 lines
14 KiB
Plaintext
帮我在写一个算法,推测前区首球。
|
||
入参有高位/中位/低位,5个前区号码,加2个后区号码。
|
||
分三种情况:
|
||
如果是高位:
|
||
step1.先拿这5个前区号码分别作为主球号到d9(d9表中的系数需要先按系数从大到小排列)表去查询系数最大的前17位,注意第17位的号码对应的系数如果有多个,则需要处理毛边,
|
||
处理毛边的规则是:
|
||
* 1) 拿系数相同的号码先去dlt_frontend__historytop_100 表中比较,取系数高者
|
||
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出,相同的号码先去dlt_frontend_history_top表比较,取系数高者
|
||
* 3) 若仍无法区分,就默认选择第一位
|
||
比如第16/17/18/19这四个位置的号码对应的系数相同,需要选择最后(需要筛选出的17位号码)的16位和17位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是18位的系数最高,其余位置的系数相同;首先将18位对应的号码作为需要筛选出的17位号码的第十六位;
|
||
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数,去系数对应最大的一个球号作为需要筛选出的17位号码的第十七位;
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
注意:这一步取出17个球号后,还需要记录这17个球号在d9表中对应的系数,最后记录一个包含球号和对应的系数的map。最后组成85个球号的map
|
||
step2.筛选出dlt_frontend__historytop表中去系数最大的3个值作为对应的系数;
|
||
step3.筛选出dlt_frontend__historytop_100表中去系数最大的3个值作为对应的系数;这一步也需要处理毛边;
|
||
若3个号码中第三个位置对应的系数有多个,需要拿这多个球号去dlt_frontend__historytop比较系数值大的号码作为最终的号码,
|
||
若经过dlt_frontend__historytop还是无法选出,就默认选择第一位
|
||
step4.最后拿这2个后区号码分别作为主球号到d12表(d12表中的系数需要先按系数从大到小排列)去查询系数最大的前17位,注意第17位的号码对应的系数如果有多个,则需要处理毛边,
|
||
处理毛边的规则是:
|
||
* 1) 拿系数相同的号码先去dlt_frontend__historytop_100 表中比较,取系数高者
|
||
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出,相同的号码先去dlt_frontend_history_top表比较,取系数高者
|
||
* 3) 若仍无法区分,就默认选择第一位
|
||
比如第16/17/18/19这四个位置的号码对应的系数相同,需要选择最后的16位和17位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是18位的系数最高,其余位置的系数相同;首先将18位对应的号码作为需要筛选出的17位号码的第十六位;
|
||
则需要那这个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
|
||
最后组成5*17 + 3 + 3 + 2*17 = 125个号码
|
||
|
||
从125个备选球号中,按照“累计出现最多次;D9系数最大和;百期排行最靠前;历史排行为终裁”的阶梯原则,依次取出前12个。
|
||
具体是这样的:
|
||
首先,需要统计125个球号出现的次数,取出出现次数最多的球号,若出现次数排名前十的已经选出,而第11/12/13/14对应的出现次数一样,
|
||
则需要拿这四个球号分别去step1中记录的map取出对应的系数,因为1个球号在map中可能有有多个,需要记录系数和,如果1次都没出现,对应的系数和则为0,最后比较这个球号对应的系数和,
|
||
若14位球号对应的系数和最大,其余相等,则取第14位的球号最为12个中的第11个;
|
||
此时还没有到达12个,则需要那这个11/12/13号码作为球号去dlt_frontend__historytop_100 比较对应的系数,比较对应的系数;
|
||
如果还是没有筛选出,则需要那这个11/12/13号码作为球号去dlt_frontend__historytop 比较对应的系数,最终组成12个球号。
|
||
|
||
|
||
如果是中位:
|
||
step1.先拿这5个前区号码分别作为主球号到d9(d9表中的系数需要先按系数从大到小排列)表取平均值(每个球号作为主球号去d9表查询,对应的所有系数的平均值,离这个平均值最近且比它大的号码。下面的平均值定义也一样)
|
||
向上8个球,向下8个球,组成17个球号,注意此时第1位和第17位的号码都需要处理毛边,
|
||
处理毛边的规则是:
|
||
* 1) 拿系数相同的号码先去dlt_frontend__historytop_100 表中比较,取系数高者
|
||
* 2) 若经过dlt_history__frontend_top_100还是无法筛选出,相同的号码先去dlt_frontend_history_top表比较,取系数高者
|
||
* 3) 若仍无法区分,则就默认选择第一位
|
||
处理下方毛边时:
|
||
比如第16/17/18/19这四个位置的号码对应的系数相同,需要选择最后的16位和17位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是18位的系数最高,其余位置的系数相同;首先将18位对应的号码作为需要筛选出的下方8位号码的第7位;
|
||
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数,去系数对应最大的一个球号作为需要筛选出的下发8位号码的第8位;
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
处理上方毛边时:
|
||
比如 第1/2和第一位上面的两个球号 这四个位置的号码对应的系数相同,需要选择最后的第1位和第2位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是第2位系数最高,其余位置的系数相同;首先将2位对应的号码作为需要筛选出的8位号码的第1位;
|
||
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数,去系数对应最大的一个球号作为需要筛选出的8位号码的第2位;
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
注意:这一步取出17个球号后,还需要记录这17个球号在d9表中对应的系数,最后记录一个包含球号和对应的系数的map。最后组成85个球号的map
|
||
step2.筛选出dlt_frontend__history_top表中去系数最大的3个值作为对应的系数;
|
||
step3.筛选出dlt_frontend__history_top_100表中去系数最大的3个值作为对应的系数;这一步也需要处理毛边;
|
||
若3个号码中第三个位置对应的系数有多个,需要拿这多个球号去dlt_frontend__historytop比较系数值大的号码作为最终的号码,
|
||
若经过dlt_frontend__historytop还是无法选出,就默认选择第一位
|
||
step4.最后拿这2个后区号码分别作为主球号到d12表(d12表中的系数需要先按系数从大到小排列)去查询系数最大的前17位,注意此时第1位和第17位的号码都需要处理毛边,
|
||
处理毛边的规则是:
|
||
* 1) 拿系数相同的号码先去dlt_frontend__historytop_100 表中比较,取系数高者
|
||
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出,相同的号码先去dlt_frontend_history_top表比较,取系数高者
|
||
* 3) 若仍无法区分,就默认选择第一位
|
||
处理下方毛边时:
|
||
比如第16/17/18/19这四个位置的号码对应的系数相同,需要选择最后的16位和17位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是18位的系数最高,其余位置的系数相同;首先将18位对应的号码作为需要筛选出的下方8位号码的第7位;
|
||
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数,去系数对应最大的一个球号作为需要筛选出的下发8位号码的第8位;
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
处理上方毛边时:
|
||
比如 第1/2和第一位上面的两个球号 这四个位置的号码对应的系数相同,需要选择最后的第1位和第2位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是第2位系数最高,其余位置的系数相同;首先将2位对应的号码作为需要筛选出的8位号码的第1位;
|
||
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数,去系数对应最大的一个球号作为需要筛选出的8位号码的第2位;
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
|
||
最后组成5*17 + 3 + 3 + 2*17 = 125个号码
|
||
|
||
从125个备选球号中,按照“累计出现最多次;D9系数最大和;百期排行最靠前;历史排行为终裁”的阶梯原则,依次取出前12个。
|
||
具体是这样的:
|
||
首先,需要统计125个球号出现的次数,取出出现次数最多的球号,若出现次数排名前十的已经选出,而第11/12/13/14对应的出现次数一样,
|
||
则需要拿这四个球号分别去step1中记录的map取出对应的系数,因为1个球号在map中可能有有多个,需要记录系数和,如果1次都没出现,对应的系数和则为0,最后比较这个球号对应的系数和,
|
||
若14位球号对应的系数和最大,其余相等,则取第14位的球号最为12个中的第11个;
|
||
此时还没有到达12个,则需要那这个11/12/13号码作为球号去dlt_frontend__historytop_100 比较对应的系数,比较对应的系数;
|
||
如果还是没有筛选出,则需要那这个11/12/13号码作为球号去dlt_frontend__historytop 比较对应的系数,最终组成12个球号。
|
||
|
||
|
||
如果是低位:
|
||
step1.先拿这5个前区号码分别作为主球号到d9表(d9表中的系数需要先按系数从大到小排列)取最小值向上16个球,组成17个球号,注意此时第1位号码(17个中系数最大值)需要处理毛边,
|
||
处理毛边的规则是:
|
||
* 1) 拿系数相同的号码先去dlt_frontend__historytop_100 表中比较,取系数高者
|
||
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出,相同的号码先去dlt_frontend_history_top表比较,取系数高者
|
||
* 3) 若仍无法区分,就默认选择第一位
|
||
比如 第1/2和第一位上面的两个球号 这四个位置的号码对应的系数相同,需要选择最后的第1位和第2位两个号码,则需要那这4个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
如果结果是第2位系数最高,其余位置的系数相同;首先将2位对应的号码作为需要筛选出的17位号码的第十六位;
|
||
再拿其余3个位置的号码作为主球号去 dlt_frontend_history_top里比较对应的点系数,去系数对应最大的一个球号作为需要筛选出的17位号码的第十七位;
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
注意:这一步取出17个球号后,还需要记录这17个球号在d9表中对应的系数,最后记录一个包含球号和对应的系数的map。最后组成85个球号的map
|
||
step2.筛选出dlt_frontend__history_top表中去系数最大的3个值作为对应的系数;
|
||
step3.筛选出dlt_frontend__history_top_100表中去系数最大的3个值作为对应的系数;这一步也需要处理毛边;
|
||
若3个号码中第三个位置对应的系数有多个,需要拿这多个球号去dlt_frontend_historytop比较系数值大的号码作为最终的号码,
|
||
若经过dlt_frontend__historytop还是无法选出,就默认选择第一位
|
||
step4.最后拿这2个后区号码分别作为主球号到d12表(d12表中的系数需要先按系数从大到小排取最小值向上16个球,组成17个球号,注意此时第1位需要处理毛边,
|
||
处理毛边的规则是:
|
||
* 1) 拿系数相同的号码先去dlt_frontend__historytop_100 表中比较,取系数高者
|
||
* 2) 若经过dlt_frontend_history_top_100还是无法筛选出,相同的号码先去dlt_frontend_history_top表比较,取系数高者
|
||
* 3) 若仍无法区分,就默认选择第一位
|
||
比如 第1/2和第一位上面的两个球号 这四个位置的号码对应的系数相同,需要选择最后的第1位和第2位两个号码,则需要那这4个号码作为主球号去dlt_frontend__history_top_100 比较对应的系数,
|
||
如果结果是18位的系数最高,其余位置的系数相同;首先将18位对应的号码作为需要筛选出的17位号码的第十六位;
|
||
则需要那这个号码作为主球号去dlt_frontend__historytop_100 比较对应的系数,
|
||
若是经过dlt_frontend_history_top比较还是无法筛选出,就默认选择第一位
|
||
|
||
最后组成5*17 + 3 + 3 + 2*17 = 125个号码
|
||
|
||
从125个备选球号中,按照“累计出现最多次;D9系数最大和;百期排行最靠前;历史排行为终裁”的阶梯原则,依次取出前12个。
|
||
具体是这样的:
|
||
首先,需要统计125个球号出现的次数,取出出现次数最多的球号,若出现次数排名前十的已经选出,而第11/12/13/14对应的出现次数一样,
|
||
则需要拿这四个球号分别去step1中记录的map取出对应的系数,因为1个球号在map中可能有有多个,需要记录系数和,如果1次都没出现,对应的系数和则为0,最后比较这个球号对应的系数和,
|
||
若14位球号对应的系数和最大,其余相等,则取第14位的球号最为12个中的第11个;
|
||
此时还没有到达12个,则需要那这个11/12/13号码作为球号去dlt_frontend__historytop_100 比较对应的系数,比较对应的系数;
|
||
如果还是没有筛选出,则需要那这个11/12/13号码作为球号去dlt_frontend__historytop 比较对应的系数,最终组成12个球号。
|
||
|
||
|
||
|
||
|
||
|
||
|