C#生成不重复随机数(随机宝箱)
今天在做礼包系统的时候,有一个看起来很简单的需求。
在十二个礼包里随机挑选四个作为特殊奖励礼包。
这个需求乍一看很简单。
无非就是在1-12中random
一个数,然后再判定一下这个数有没有已经随机过。如此重复四次。
实现起来得两个for
循环嵌套。
确实是很简单,但也很麻烦。
懒狗还是想找找有没有一行就可以解决的办法。
在替换了诸多关键词后,终于被我找到了。
效果为在1-12中随机挑选4个数并编入数组。
int[] selectNumArray = Enumerable.Range(1, 12).OrderBy(t => Guid.NewGuid()).Take(4).ToArray();
Enumerable
是Linq
中常用的一个类,提供一组用于查询实现 IEnumerable<T>
的对象的 static
(在 Visual Basic 中为 Shared
)方法。
而本文用到的Enumerable.Range
方法可以很方便地生成一个指定范围内的连续整数的序列。
//返回一个起始值为startValue
,终止值为endValue
的连续整数序列。
Enumerable.Range(startValue, endValue)
如果将其转换为数组则等效于int[]
.
下列中的两个数组其实是等价的。
int[] NumArray1 = Enumerable.Range(1, 4).ToArray();
int[] NumArray2 = new int[4]{1,2,3,4};
也可以看出在处理和连续整数有关的数据上Enumerable.Range
较之int[]
有着简洁的优势。
OrderBy()
排序,Guid.NewGuid()
生成唯一序列 这些就毋庸赘述了。
int[] selectNumArray = Enumerable.Range(1, 12).OrderBy(t => Guid.NewGuid()).Take(4).ToArray();
整行代码的逻辑即:生成一个1至12的连续整数序列,然后再逐个生成唯一标识符并以此来排序,以实现乱序的效果,再取后四位出来,即1-12中的随机四个数,再将其转成数组。
文中有错误或表述不清的希望大家多多指出,谢谢。
C#生成不重复随机数(随机宝箱)相关推荐
- java contains_Java基础教程|生成不重复随机数 java
生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...
- php获取不重复的随机数字,php如何生成不重复的随机数字
[摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...
- java生成不重复随机数_生成不重复随机数 java
生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...
- java生成永远不重复的随机数_java生成不重复随机数的方法
java生成不重复随机数的方法 发布时间:2020-07-01 11:00:00 来源:亿速云 阅读:225 作者:Leah java怎么实现生成不重复随机数 ?针对这个问题,这篇文章详细介绍了相对应 ...
- 利用C#生成不重复的随机偶数
几句代码搞定C#生成不重复的随机偶数 1.网上里出现的创建不重复随机数的方法有很多,但作者草草看了一下实现的方法都不是很简单,这里我利用了list集合中BinarySearch()的方法,很简单的代码 ...
- Java生成不重复随机数,双色球程序Demo
Java生成不重复随机数,双色球Demo 设计一个程序,可以产生福利彩票的双色球中奖号码. 规则:6红球,1个蓝球 6个红球范围:1-33 1个蓝球:1-16 代码 import java.util. ...
- php rand 重复,php如何使用rand生成不重复随机数
php使用rand生成不重复随机数的方法:首先为数组的每个数字按其下标顺序赋值:然后开始取范围[ i,$num-1 ]范围内的随机数[$rand],并将获取到的随机数[$rand]作为数组中当前位置: ...
- ios 生成不重复随机数
一.先讲下ios三种取随机数的方法: 1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; 2. ...
- php怎么不重复随机数,php怎么生成不重复随机数
php怎么生成不重复随机数 php生成不重复随机数的方法:首先利用range函数创建一个包含指定范围的元素的数组:然后利用shuffle函数把数组中的元素按随机顺序重新排列:最后取出数组中的一段元素即 ...
- JAVA生成不重复随机数算法
一个不错的算法,很简单,但有效.不过如果范围比较大,则占用内存大,就不推荐使用了.个人感觉1000个以内的就可以考虑.这东西也许你早就知道了,但我依然惊叹算法的力量. 看代码 import java. ...
最新文章
- Python使用scipy包将稀疏矩阵保存为Mtx格式和npz格式文件实战
- varnish性能调优
- springboot中如何添加第三方的jar包或者说如何配置本地jar
- 数据库设计范式1NF-5NF白话总结
- anaconda3配置环境变量_Python:Anaconda安装及LabelMe配置(1)
- VC++下Window剪贴板的操作
- 01LaTeX学习系列之---TeX的介绍与认识
- AD20学习笔记4---网表导入及模块化布局设计
- #{}不自动改参数类型_我是干流动补胎的,想让我的柴油机气泵自动打气,怎么改装。谢谢。...
- Dubbo2.7源码分析-SPI的应用
- 激光雷达原理 你真的了解全了吗?
- Multisim基础 调出面包板
- LeetCode探索之旅(17)-69求根号
- maya表情blendshape_引用 【Maya】角色表情绑定-BlendShape的使用技巧
- 微信二次分享解决方案
- 企业邮箱发信数量是多少?
- 名帖119 文徵明 小楷《摩诃般若波罗蜜多心经》
- wireshark的usb抓包分析 2 - 分析数据
- 微信编辑器自带阅读鼓励金,让阅读更有意思!
- 图论中握手定理的详细解释
热门文章
- 写一个用矩形法求定积分的通用函数,分别求: 		 		∫(0,1) sinxdx	,	∫(0,1)cosxdx	,	∫(0,1)e^xdx 。
- 高中发表在论文计算机方面,高中计算机论文
- STM32 阿里云MQTT esp8266 AT命令
- Shiro学习笔记(二):自定义Realm的实现
- 令人惋惜:Sigfox撑不下去了!这回,可不能怪NB-IoT、LoRa......
- SAP 固定资产主数据
- 自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
- 数据库简介、及常用数据库介绍
- 关于iphone手机影片预览的格式 转自 我的恩师 郑哥
- PS笔记:调色部分理论基础