求AC值算法

panzi667 2016-10-27 04:58:09
求AC值的算法,
AC值实际上也称作“数字复杂值”,它是引自国外乐透型彩票分析研究的一个概念,是评估乐透型彩票号码价值的一个重要的参数。在乐透型彩票中,是指任何一组号码中所有两个号码数字的正数差值的总数减去(R-1)的值,其中R为投注号码数。AC值最小值为0,最大值:当7个基本号数时为15,6个基本号数时为10,5个基本号数时为6。复杂值越大,表明号码算术级数越复杂,规律性越差,随机性越强。含算术级数过多的号码,其复杂值较低,则随机性越差,中奖机会也更低。全部由算术级数构成的号码,复杂值可以为0。例如:对双色球来说,上期号码为:04 09 10 21 22 24 ,则这6个号码数字之间的正差值分别是: 5 6 17 18 20 ; 1 12 13 15 ; 11 12 14 ; 1 3 ; 2 , 以上共有 13 个不同的差值,即1、2、3、5、6、11、12、13、14、15、17、18、20,由于 R=6,则AC值=13-(6-1)=8
...全文
250 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
static int AC(int[] arr)
{
HashSet<int> diff = new HashSet<int>();
for (var i = 0; i < arr.Length-1; i++)
{
for (var j = i+1; j < arr.Length; j++)
{
diff.Add(Math.Abs(arr[j] - arr[i]));//正差值修正
}
}
return diff.Count - (arr.Length - 1);
}

Console.WriteLine(AC("04 09 10 21 22 24".Split(' ').Select(s => int.Parse(s)).ToArray()));
panzi667 2016-10-28
  • 打赏
  • 举报
回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧