c# 模拟网易足彩算法

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    //class bf
    //{
    //    /// <summary>
    //    /// 类型名
    //    /// </summary>
    //    public string name { set; get; }
    //    /// <summary>
    //    /// 总和球
    //    /// </summary>
    //    public int sum { set; get; }
    //    /// <summary>
    //    /// 相差球
    //    /// </summary>
    //    public int diff { set; get; }
    //    /// <summary>
    //    /// 胜平负
    //    /// </summary>
    //    public int spf { set; get; }

    //    /// <summary>
    //    /// 数据集合
    //    /// </summary>
    //    public Dictionary<string,int> maxofttt { set; get; }

    //}

    class Class1
    {
        /// <summary>
        /// 初始化 Ga di!
        /// </summary>
        public void csh()
        {
            List<bf> algo = new List<bf>();
            int i = 0;
            for (; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    if (i == 3 && j > 3 || i > 3 && j > 2) { continue; }
                    algo.Add(new bf()
                 {
                      name= i + "" + j,
                      sum= i + j,
                      diff= Math.Abs(i - j),
                      spf= i > j ? 3 : (i < j ? 0 : 1)
                 });
                }
            }
            Dictionary<string, int>[] sus = new Dictionary<string, int>[100];
            for (i = algo.Count;i>=0 ; i--)
            {
                bf bff = algo[i];
                Dictionary<string, int> oft = new Dictionary<string, int>();
                oft.Add("bf - " + bff.name, 1);
                oft.Add("sum-" + bff.sum, 1);
                oft.Add("spf-" + bff.spf, 1);
                if (bff.spf == 3)
                {
                    if (bff.sum > 2) { oft.Add("bqc-03", 1);}
                    oft.Add("bqc-13", 1);
                    oft.Add("bqc-33", 1);
                }
                else if (bff.spf == 1)
                {
                    if (bff.sum > 1)
                    {
                        oft.Add("bqc-01", 1);
                        oft.Add("bqc-31", 1);
                    }
                    oft.Add("bqc-11", 1);
                }
                else if (bff.spf == 1)
                {
                    oft.Add("bqc-00", 1);
                    oft.Add("bqc-10", 1);
                    if (bff.sum > 2) { oft.Add("bqc-30", 1); }
                }
                sus[i] = oft;
            }
        }
    }

    //var algo = this, allBf = [], len = 0, bfCheckMap = { };

    // allBf.push({ name: ‘3A‘,sum: 7, spf: 3}, { name: ‘1A‘,sum: 7,spf: 1},{ name: ‘0A‘,sum: 7,spf: 0});

    }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        /// <summary>
        /// 所有可能比分
        /// </summary>
        public static Dictionary<string, int>[] sus;
        /// <summary>
        /// 要遍历的次数名字!!!
        /// </summary>
        public static List<bf> algo;

        /// <summary>
        /// 初始化所有情况
        /// </summary>
        public static void csh()
        {
            algo = new List<bf>();
            int i = 0;
            for (; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    if (i == 3 && j > 3 || i > 3 && j > 2) { continue; }
                    algo.Add(new bf()
                    {
                        bileft = i,
                        biright = j,
                        name = i + "" + j,
                        sum = i + j,
                        diff = Math.Abs(i - j),
                        spf = i > j ? 3 : (i < j ? 0 : 1)
                    });
                }
            }
            //加上大于7的可能 默认为9
            algo.Add(new bf() { name = "39", bileft = 3, biright = 9, sum = 7, spf = 3 });
            algo.Add(new bf() { name = "19", bileft = 1, biright = 9, sum = 7, spf = 1 });
            algo.Add(new bf() { name = "09", bileft = 0, biright = 9, sum = 7, spf = 0 });
            sus = new Dictionary<string, int>[100];
            for (i = algo.Count - 1; i >= 0; i--)
            {
                bf bff = algo[i];
                Dictionary<string, int> oft = new Dictionary<string, int>();
                oft.Add("bf-" + bff.name, 1);
                oft.Add("sum-" + bff.sum, 1);
                oft.Add("spf-" + bff.spf, 1);
                if (bff.spf == 3)
                {
                    if (bff.sum > 2) { oft.Add("bqc-03", 1); }
                    oft.Add("bqc-13", 1);
                    oft.Add("bqc-33", 1);
                }
                else if (bff.spf == 1)
                {
                    if (bff.sum > 1)
                    {
                        oft.Add("bqc-01", 1);
                        oft.Add("bqc-31", 1);
                    }
                    oft.Add("bqc-11", 1);
                }
                else if (bff.spf == 0)
                {
                    oft.Add("bqc-00", 1);
                    oft.Add("bqc-10", 1);
                    if (bff.sum > 2) { oft.Add("bqc-30", 1); }
                }
                sus[i] = oft;
            }
        }

        static void Main(string[] args)
        {

            csh();//初始化
                  // 数据传递格式
                  // sfp 胜负平  bf 比分  rsfp 让球胜负平 sum 总球数 bqc 半全场  #后面跟倍率  & 区分玩法 ,是玩法的类型区分
                  //胜 是3  平 1  负 0
                  //bqc 传递数据格式  如 平胜  平是2胜是3  就传  13  胜胜 33 平平 11
                  // bf  如果 1:2  传 12
                  //数据格式 rspf-3#1.31,rspf-1#1.1&spf-3#1.98 &bf-10#8.25& sum-0#21.00 &bqc-33#1.70
                  //没有的数据默认  rspf-9#0&spf-9#0....  没有数据全部默认传9  并且  大概率 如7:7 以上的 统统传9
            var tt = money(1, "rspf-3#1.46,rspf-1#3.65,rspf-0#5.85&spf-1#2.72&bf-11#6.00&sum-2#2.95&bqc-13#5.50");
            //方法可以返回 最大最小金额的 所有复合方案  数组组后可以看最小最大金额
            Console.WriteLine("最大金额方案");
            foreach (var item in tt[0] as string[])
            {
                if (string.IsNullOrEmpty(item))
                {
                    break;
                }
                Console.WriteLine(item);//最大金额所有符合的方案
            }
            Console.WriteLine("最小金额方案");
            foreach (var item in tt[1] as string[])
            {
                if (string.IsNullOrEmpty(item))
                {
                    break;
                }
                Console.WriteLine(item);//最小金额所有符合的方案
            }

        }

        /// <summary>
        /// 最大金额 最小金额 计算
        /// </summary>
        /// <param name="rq">让球</param>
        /// <param name="xx">数据格式</param>
        /// <returns></returns>
        public static object[] money(int rq, string xx)
        {
            string[] maxmin = new string[10];//存当前满足条件情况的倍率
            string[] maxto = new string[10];//最大钱倍率
            string[] minto = new string[10];//最小钱倍率
            int mmint = 0;//初始下标
            decimal mins = 0, maxs = 0, csh = 0;//上面三个的初始赋值
            int cs = 0;//名字
            string[] rot = new string[45];//存所有情况
            string[] rrot = new string[3];//存让球情况
            int xt = 0, xr = 0;//所有情况下标 和让球情况下标
            string[] a = xx.Split(‘&‘);//把玩法分开
            //把所有数据进行统计和
            for (int k = 0; k < a.Length; k++)
            {
                string[] b = a[k].Split(‘,‘);
                for (int i = 0; i < b.Length; i++)//去每个选项的名字 和 赔率
                {
                    if (b[i].Substring(0, 2) == "rs")
                    {
                        rrot[xr] = b[i];
                        xr++;
                    }
                    else
                    {
                        rot[xt] = b[i];
                        xt++;
                    }
                }
            }
            decimal mo = 1;
            foreach (var item in sus)
            {
                if (item == null)
                {
                    break;
                }
                for (int k = 0; k < rrot.Length; k++)
                {
                    if (string.IsNullOrEmpty(rrot[k]))
                    {
                        break;
                    }
                    int jiequ = rrot[k].Split(‘#‘)[0].Length;
                    if (algo[cs].bileft - algo[cs].biright + rq > 0 && int.Parse(rrot[k].Split(‘#‘)[0].Substring(jiequ - 1, 1)) == 3)
                    {
                        maxmin[mmint] = rrot[k];
                        mmint++;
                        mo *= decimal.Parse(rrot[k].Split(‘#‘)[1]);
                    }
                    if (algo[cs].bileft - algo[cs].biright + rq == 0 && int.Parse(rrot[k].Split(‘#‘)[0].Substring(jiequ - 1, 1)) == 1)
                    {
                        maxmin[mmint] = rrot[k];
                        mmint++;
                        mo *= decimal.Parse(rrot[k].Split(‘#‘)[1]);
                    }
                    if (algo[cs].bileft - algo[cs].biright + rq < 0 && int.Parse(rrot[k].Split(‘#‘)[0].Substring(jiequ - 1, 1)) == 0)
                    {
                        maxmin[mmint] = rrot[k];
                        mmint++;
                        mo *= decimal.Parse(rrot[k].Split(‘#‘)[1]);
                    }
                }
                for (int i = 0; i < rot.Length; i++)
                {
                    if (string.IsNullOrEmpty(rot[i]))
                    {
                        break;
                    }
                    if (item.Any(c => c.Key.Contains(rot[i].Split(‘#‘)[0])))
                    {
                        maxmin[mmint] = rot[i];
                        mmint++;
                        mo *= decimal.Parse(rot[i].Split(‘#‘)[1]);
                    }
                }
                if (csh == 0 && mo != 1)
                {
                    maxs = mo;
                    mins = mo;
                    maxmin.CopyTo(maxto, 0);
                    maxmin.CopyTo(minto, 0);
                    csh = 1;
                }
                if (mo != 1 && mo > maxs)
                {
                    maxs = mo;
                    maxto = new string[10];
                    maxmin.CopyTo(maxto, 0);
                }
                if (mo != 1 && mo < mins)
                {
                    mins = mo;
                    minto = new string[10];
                    maxmin.CopyTo(minto, 0);
                }
                mo = 1;//初始化金额
                maxmin = new string[10];//清空数组
                mmint = 0;//数组小标清空
                cs++;
            }

            return new object[2] { maxto, minto };
        }

    }

    class bf
    {
        /// <summary>
        /// 比分名字
        /// </summary>
        public string name { set; get; }
        /// <summary>
        /// 模拟左比分
        /// </summary>
        public int bileft { set; get; }
        /// <summary>
        /// 模拟右比分
        /// </summary>
        public int biright { set; get; }
        /// <summary>
        /// 总和球
        /// </summary>
        public int sum { set; get; }
        /// <summary>
        /// 相差球
        /// </summary>
        public int diff { set; get; }
        /// <summary>
        /// 胜平负
        /// </summary>
        public int spf { set; get; }

    }

}

原文地址:https://www.cnblogs.com/yuanzijian-ruiec/p/10295929.html

时间: 2024-10-20 11:49:10

c# 模拟网易足彩算法的相关文章

关于足彩任选九的组合算法

最近互联网彩票被国家叫停进行整改了,整改后互联网公司获取利润肯定会降低,但是不得不说中国的互联网彩票销售需要进行整改了,虽然对行业是阵痛,但是能够更好的规范彩票市场,对整个市场都会起到积极的作用.前段时间在做互联网彩票时也遇到了一些问题,特别是足彩任选九的复试组合算法. 足彩标注投注玩法:从14场比赛中任意选择9场比赛,每场比赛选择1种比赛结果为1注,每场比赛最多可选3种结果,单注最高奖金500万元!标准投注时可选择1-8场比赛结果作为胆码,其它比赛场次结果作为拖码进行胆拖投注,单注最高奖金50

足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一)

在足球赛事数据库以及统计分析预测平台中,有很多概念,如果不搞懂,很难进行下一步的工作.所以为了配合团队人员的学习和任务进行,特意编写这篇文章.如果有其他问题和不懂的,请留言,将根据情况进行更新. 本文原文地址:足彩基础知识入门(4)赛事数据库与预测平台基础概念介绍(一) 1.指数1/2/3.... 我在 足彩基础知识入门(3)足彩赔率的本质 一文中介绍了赔率的概念,那么指数的概念和赔率以及结果是相关的.我们举个例子: 如上图的比赛,前面是竞彩非让球的赔率:1.74-3.25-4.15,也就是说

足彩入门教程之亚盘大详解:手把手教你看亚盘

新浪体育讯 买足彩总避免不了看亚盘数据分析.那什么是亚盘?亚盘的全称为让球式亚洲盘,它的竞猜对象主要为足球比赛.我们都知道,足球场上两支球队的实力很多时候是不一样的,那么,对其比赛结果进行博弈将很难做到公平竞猜,因为投注者大都会选择实力较强一方做为投注对象,赢利概率自然会很大,这样,这场博弈游戏就无法继续下去,由此,亚盘应运而生.亚盘起源于亚洲,但现在欧洲一些博彩公司也纷纷开出亚洲盘来占据市场.下面介绍的是盘口的基本要素: 1.什么是让球盘(独赢盘) 让球盘口又叫"独赢盘",即在指定的

C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

目录 00 简介 01 算法概述 02 公用方法 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存的忙闲状态,为进程分配和释放内存.当主存的空间太小而无法装入所有的进程时,就需要在内存和硬盘之间进行调度操作. 多数操作系统只采用某种特定的页面置换算法进行置换,无法预先探测当前运行进程的页面访问模式,因此不能根据不同的页面访问模式,选用不同的页面置换算法.当然,如果能对不同的访问模式选取相应的页面置换算法,

用队列模拟jquery的动画算法

Aaron最近疯狂的爱上了算法研究,估计又要死伤不少脑细胞了,我喜欢捡现成的,可以省些力气.发现他写的一段源码,运行一下,还蛮好玩的,于是拿来分析一下,一来吸收下里边的营养,二来加深一下源码学习的功力.话说这源码还真是提高js内功的一大秘决,不信,就和我一起来品味一下吧. //立即执行函数,没有什么好说的.看下面演示 /** (function($){ //此处的$会由后面紧跟的立即执行函数的返回值提供 })(function(){ //这个函数运行的结果就是$啦 return aQuery }

程序模拟洗扑克牌(算法)

前一段时间找实习,腾讯面试中一轮面试官被问到这个题目,我回答了以下解法中的第一种,太搓了.直接遭面试官歧视了,回来搜了搜,发现一种更好的解法(以下解法中的另外一种).今天偶尔发现解法2事实上有毛病.于是改进了.有了算法3和算法4. 前提:一副扑克牌有54张.因此我们能够一个整型数组array[54]或者map来存储."A"用0~3,"2"用4~7,"3"用8~11......"K"用48~51,小鬼用52,大鬼用53表示.关于

神彩彩票系统门户版安卓手机端客户端源码

软件版本:V2.0软件大小:25MB软件类型:简体中文/国产软件/免费版软件分类:源码.java / android运行环境:Winxp/vista/win8/2000/2003/linux 解压密码是:php.662p.com我的联系QQ:2360 2486 66项目压缩包里有演示安装包,需要的朋友可以下载看看演示软件预览图:<ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op> 软件简介:

网易易盾音频过滤服务再次迭代 新增音频实时检测

随着用户获取信息的方式差异化,音频产品因为使用场景多元.伴随性和碎片化,在当下快节奏的社会中,受到越来越多的用户欢迎.iiMedia Research数据显示,2018年在线音频用户规模增速达22.1%,2018年用户数量达到4.25亿. 用户的快速发展,也伴随着低俗.×××内容在这些音频平台上蔓延.最典型的就是去年6月份,全国"扫黄打非"办公室约谈多家网站负责人,要求各平台大力清理涉×××低俗问题的ASMR内容,加强对相关内容的监管和审核. 然而对音频的内容审核存在多个难点,比如说语

C语言::模拟实现strlen函数

编写一个C语言程序模拟实现strlen函数. 算法 strlen函数功能是计算字符串中字符的个数.(除\0外) 而字符串本身就是一个字符数组,只不过末尾以\0结束. 因此,我们只需遍历除\0之外的所有字符即可. 有三种方法可以解决这个问题. 算法总结 方法一:设置一个整型计数器,遍历字符串. 方法二:通过不断函数自身的递归. 方法三:与方法一类似,设置一个char*变量标记字符串尾部,通过指针相减得到字符长度. 核心代码 //方法一:通过设置整型计数器,模拟实现strlen函数. int my_