今天在做礼包系统的时候,有一个看起来很简单的需求。
在十二个礼包里随机挑选四个作为特殊奖励礼包。
这个需求乍一看很简单。
无非就是在1-12中random一个数,然后再判定一下这个数有没有已经随机过。如此重复四次。
实现起来得两个for循环嵌套。
确实是很简单,但也很麻烦。
懒狗还是想找找有没有一行就可以解决的办法。
在替换了诸多关键词后,终于被我找到了。

效果为在1-12中随机挑选4个数并编入数组。

int[] selectNumArray = Enumerable.Range(1, 12).OrderBy(t => Guid.NewGuid()).Take(4).ToArray();

EnumerableLinq中常用的一个类,提供一组用于查询实现 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#生成不重复随机数(随机宝箱)相关推荐

  1. java contains_Java基础教程|生成不重复随机数 java

    生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...

  2. php获取不重复的随机数字,php如何生成不重复的随机数字

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  3. java生成不重复随机数_生成不重复随机数 java

    生成不重复随机数 java java生成随机数可以使用Math类中的方法.不随机可以使用List进行判断存储.(推荐教程:java教程 ) 1 . 调用java.lang下面Math类中的random ...

  4. java生成永远不重复的随机数_java生成不重复随机数的方法

    java生成不重复随机数的方法 发布时间:2020-07-01 11:00:00 来源:亿速云 阅读:225 作者:Leah java怎么实现生成不重复随机数 ?针对这个问题,这篇文章详细介绍了相对应 ...

  5. 利用C#生成不重复的随机偶数

    几句代码搞定C#生成不重复的随机偶数 1.网上里出现的创建不重复随机数的方法有很多,但作者草草看了一下实现的方法都不是很简单,这里我利用了list集合中BinarySearch()的方法,很简单的代码 ...

  6. Java生成不重复随机数,双色球程序Demo

    Java生成不重复随机数,双色球Demo 设计一个程序,可以产生福利彩票的双色球中奖号码. 规则:6红球,1个蓝球 6个红球范围:1-33 1个蓝球:1-16 代码 import java.util. ...

  7. php rand 重复,php如何使用rand生成不重复随机数

    php使用rand生成不重复随机数的方法:首先为数组的每个数字按其下标顺序赋值:然后开始取范围[ i,$num-1 ]范围内的随机数[$rand],并将获取到的随机数[$rand]作为数组中当前位置: ...

  8. ios 生成不重复随机数

    一.先讲下ios三种取随机数的方法: 1.    srand((unsigned)time(0));  //不加这句每次产生的随机数不变         int i = rand() % 5; 2.  ...

  9. php怎么不重复随机数,php怎么生成不重复随机数

    php怎么生成不重复随机数 php生成不重复随机数的方法:首先利用range函数创建一个包含指定范围的元素的数组:然后利用shuffle函数把数组中的元素按随机顺序重新排列:最后取出数组中的一段元素即 ...

  10. JAVA生成不重复随机数算法

    一个不错的算法,很简单,但有效.不过如果范围比较大,则占用内存大,就不推荐使用了.个人感觉1000个以内的就可以考虑.这东西也许你早就知道了,但我依然惊叹算法的力量. 看代码 import java. ...

最新文章

  1. Python使用scipy包将稀疏矩阵保存为Mtx格式和npz格式文件实战
  2. varnish性能调优
  3. springboot中如何添加第三方的jar包或者说如何配置本地jar
  4. 数据库设计范式1NF-5NF白话总结
  5. anaconda3配置环境变量_Python:Anaconda安装及LabelMe配置(1)
  6. VC++下Window剪贴板的操作
  7. 01LaTeX学习系列之---TeX的介绍与认识
  8. AD20学习笔记4---网表导入及模块化布局设计
  9. #{}不自动改参数类型_我是干流动补胎的,想让我的柴油机气泵自动打气,怎么改装。谢谢。...
  10. Dubbo2.7源码分析-SPI的应用
  11. 激光雷达原理 你真的了解全了吗?
  12. Multisim基础 调出面包板
  13. LeetCode探索之旅(17)-69求根号
  14. maya表情blendshape_引用 【Maya】角色表情绑定-BlendShape的使用技巧
  15. 微信二次分享解决方案
  16. 企业邮箱发信数量是多少?
  17. 名帖119 文徵明 小楷《摩诃般若波罗蜜多心经》
  18. wireshark的usb抓包分析 2 - 分析数据
  19. 微信编辑器自带阅读鼓励金,让阅读更有意思!
  20. 图论中握手定理的详细解释

热门文章

  1. 写一个用矩形法求定积分的通用函数,分别求: ∫(0,1) sinxdx , ∫(0,1)cosxdx , ∫(0,1)e^xdx 。
  2. 高中发表在论文计算机方面,高中计算机论文
  3. STM32 阿里云MQTT esp8266 AT命令
  4. Shiro学习笔记(二):自定义Realm的实现
  5. 令人惋惜:Sigfox撑不下去了!这回,可不能怪NB-IoT、LoRa......
  6. SAP 固定资产主数据
  7. 自监督论文阅读笔记Reading and Writing: Discriminative and Generative Modelingfor Self-Supervised Text Recogn
  8. 数据库简介、及常用数据库介绍
  9. 关于iphone手机影片预览的格式 转自 我的恩师 郑哥
  10. PS笔记:调色部分理论基础