C#排列数字组合方法
时间:2020-01-09
本文章向大家介绍C#排列数字组合方法,主要包括C#排列数字组合方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
因一时兴趣为了计算福利彩票的排列数中奖概率,故写了以下排列数方法。有错误的地方请指正。
使用方法:
基数35个数,创建七位数组合
List<int[]> list = Arrange_Recursion(7, 0, new List<int[]>());
一共6724520种 用时 4821.1298 毫秒
/// <summary> /// 使用递归创建 组合数排列 /// </summary> /// <param name="combinationNum">组合数</param> /// <param name="StartNum">开始数 从0开始</param> /// <param name="finalList">最终排列 数组</param> /// <returns></returns> public List<int[]> Arrange_Recursion(int combinationNum, int StartNum, List<int[]> finalList) { StartNum++; if (StartNum != combinationNum) { int[] arr = CreterArray(35); List<int[]> list = CreterArrange(finalList, arr); return Arrange_Recursion(combinationNum, StartNum, list); } else { return finalList; } } /// <summary> /// 创建排列 /// </summary> /// <param name="finalList"></param> /// <param name="arr"></param> /// <returns></returns> private static List<int[]> CreterArrange(List<int[]> finalList, int[] arr) { List<int[]> list = new List<int[]>(); if (finalList.Count != 0) { foreach (int[] arr_ints in finalList) { foreach (int s2 in arr) { if (arr_ints[arr_ints.Length - 1] < s2) { int[] nArr = { s2 }; list.Add(arr_ints.Concat(nArr).ToArray()); } } } } else { //初始化数组 最低2个组合排列 foreach (int s1 in arr) { foreach (int s2 in arr) { if (s2 > s1) { int[] nArr = { s1, s2 }; list.Add(nArr); } } } } return list; } /// <summary> /// 创建多少位数组 /// </summary> /// <param name="arr_length">数组长度</param> /// <returns></returns> private static int[] CreterArray(int arr_length) { int[] arr = new int[arr_length]; for (int i = 1; i <= arr_length; i++) { arr[i - 1] = i; } return arr; }
原文地址:https://www.cnblogs.com/Harvard-L/p/12171332.html
- Gulp Error: Cannot find module 'jshint/src/cli'
- 自学如何使用Python和Keras构建你自己专属的AlphaZero系统
- 用Visual Studio Code写Node.j
- 帝国CMS搜索页伪静态实现方法
- 5步搭建GO环境
- 你真的了解如何将 Nginx 配置为Web服务器吗
- 12个JavaScript技巧
- 梯度是如何计算的
- Java 机器学习库Smile实战(二)AdaBoost
- 如何用excel urldecode解码把url编码转为汉字?
- Scikit-learn实战之 SVM回归分析、密度估计、异常点检测
- TensorFlow模拟简单线性模型小栗子
- web跨域解决方案
- Bootstrap幻灯轮播如何支持触屏左右滑动手势?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 容器中的数据管理
- Java基础 方法
- Python 技术篇-pyperclip库实现读取写入剪切板,超简单
- 基于consul的Docker-overlay跨多宿主机容器网络
- Python 微信机器人-向指定名称的好友发送微信消息
- JavaScript技术篇-js提升网页视频播放速率,提高慕课网视频播放速度
- 使用docker五步搭建ELK日志收集分析系统
- HDFS之SequenceFile和MapFile
- 配置ELK技术栈来分析apache tomcat日志
- LVS DR模式搭建,keepalived + lvs
- Ubuntu安装docker
- DockerFile简介与实例
- Elasticsearch2.3官方Dockerfile解析
- openstack架构解析
- Linux服务器基础网络配置