在.net中关于Random一共也只有这几个方法

    //// 摘要://     表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。[ComVisible(true)]public class Random{//// 摘要://     使用与时间相关的默认种子值,初始化 System.Random 类的新实例。public Random();//// 摘要://     使用指定的种子值初始化 System.Random 类的新实例。//// 参数://   Seed://     用来计算伪随机数序列起始值的数字。如果指定的是负数,则使用其绝对值。public Random(int Seed);//// 摘要://     返回一个非负随机整数。//// 返回结果://     大于等于零且小于 System.Int32.MaxValue 的 32 位带符号整数。[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]public virtual int Next();//// 摘要://     返回一个小于所指定最大值的非负随机整数。//// 参数://   maxValue://     要生成的随机数的上限(随机数不能取该上限值)。maxValue 必须大于或等于零。//// 返回结果://     大于等于零且小于 maxValue 的 32 位带符号整数,即:返回值的范围通常包括零但不包括 maxValue。不过,如果 maxValue 等于零,则返回//     maxValue。//// 异常://   T:System.ArgumentOutOfRangeException://     maxValue 小于零。public virtual int Next(int maxValue);//// 摘要://     返回在指定范围内的任意整数。//// 参数://   minValue://     返回的随机数的下界(随机数可取该下界值)。////   maxValue://     返回的随机数的上界(随机数不能取该上界值)。maxValue 必须大于或等于 minValue。//// 返回结果://     一个大于等于 minValue 且小于 maxValue 的 32 位带符号整数,即:返回的值范围包括 minValue 但不包括 maxValue。如果//     minValue 等于 maxValue,则返回 minValue。//// 异常://   T:System.ArgumentOutOfRangeException://     minValue 大于 maxValue。public virtual int Next(int minValue, int maxValue);//// 摘要://     用随机数填充指定字节数组的元素。//// 参数://   buffer://     包含随机数的字节数组。//// 异常://   T:System.ArgumentNullException://     buffer 为 null。public virtual void NextBytes(byte[] buffer);//// 摘要://     返回一个介于 0.0 和 1.0 之间的随机浮点数。//// 返回结果://     大于等于 0.0 并且小于 1.0 的双精度浮点数。[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]public virtual double NextDouble();//// 摘要://     返回一个介于 0.0 和 1.0 之间的随机浮点数。//// 返回结果://     大于等于 0.0 并且小于 1.0 的双精度浮点数。[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]protected virtual double Sample();}

C#关于Random提供的三种实例方法(1).Next()  (2).NextBytes   (3).NextDouble()

提供的方法很少,所以我们很有必要我们可以扩展一下

.Net Random常用扩展

Enum:枚举的扩展

 public static T NextEnum<T>(this Random random) where T : struct{Type type = typeof(T);  //获取返回值的类型if (type.IsEnum == false) throw new InvalidOperationException();var array = Enum.GetValues(type);var index = random.Next(array.GetLowerBound(0), array.GetLowerBound(0));return (T)array.GetValue(index);}

调用事例

enum Week{Monday = 1,TuesDay = 2,WndnesDay = 3,ThurDay = 4,FriDay = 5,SaturDay = 6,SunDay = 0}Random random = new Random();Console.WriteLine(random.NextEnum<Week>());

相关语法看不懂,我就不解释了。

Enum:byte的扩展

public static byte[] NextBytes(this Random random, int length){//question:NextBytes这个方法和Random 对象自带的方法是一样,会不会报错?//questio:最大的byte是多少,这个不知道自己打脸,真心要打脸var  result =new byte[length];random.NextBytes(result); // 用随机数填充指定字节数组的元素。参数result:一个byte数组,不断往里面填充byte 类型的数字return result;}
调用:  byte[] data = random.NextBytes(12);

Bool:bool的扩展

    public static bool NextBool(this Random random){return random.NextDouble() > 0.5;}
调用:
Random rand = new Random();
Console.WriteLine(rand.NextBool());

字符串:符合正则的随机密码

var password = random.NextString(@"[0-9a-z]{6,12}");
var passwordSalt = random.NextString(@"[a-z0-9A-Z]{16}");[0-9a-z]{6,12}");
var passwordSalt = random.NextString(@"[a-z0-9A-Z]{16}");

字符串的扩展(一个实际项目中的问题)

是这样的,在前端中经常有这样需求,将一个任务分配给多个人。这个时候会获取多个人的Id组成的字符串,所以在后端程序处理的时候,我们就要将这个字符串分割成Id重新复制成int 类型的Array.我是这样做的,希望有好的方法提出,虽然不是最好,但还是解决了一些问题

        /// <summary>/// 字符串转化成int数组/// </summary>/// <param name="arrayParmeter">具有分割符的字符串</param>/// <param name="c">分割符</param>/// <returns>success:返回元祖<list,true>,,error:<null,false></returns>public static  Tuple<int[],bool> StringParseArrayInt(this string strParmeter,char c){Tuple<int[], bool> ret = null;List<int> list = new List<int> ();string[] arrayStr = strParmeter.Split(c);try{foreach (string item in arrayStr){int temp = 0;int.TryParse(item, out temp);list.Add(temp);}}catch{ret = new Tuple<int[], bool>(null, false);return ret;}ret = new Tuple<int[], bool>(list.ToArray(),true);return ret;}

希望大家多提点意见,谢谢了

有兴趣的可以关注一下我的微信公众号,分享一些编程相关的经典文章

C#扩展(2):Random的扩展相关推荐

  1. php扩展兼容,PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性_PHP教程

    PHP扩展迁移为PHP7扩展兼容性问题记录,php7兼容性 PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容.有不少方法参数做了调整.下面是在迁移过程中遇到的一些问题. ...

  2. 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )

    文章目录 一.扩展方法示例 二.实例扩展方法配置 三.编译实例扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 实例扩展方法 一.扩展方法示例 为 Thread 扩展 he ...

  3. 【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )

    文章目录 一.扩展方法示例 二.静态扩展方法配置 三.编译静态扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 静态扩展类 一.扩展方法示例 为 Thread 扩展 hel ...

  4. linux如何扩展根分区,linux扩展根分区详细步骤

    Linux虚拟机扩展根分区! 虚拟机根分区空间不够用,在虚拟机管理界面进行单个磁盘扩展(图形化界面操作略),比如原来是30G,扩展至40G,(扩展需要关机之后操作) 其中的10G空间需要重新分区,以下 ...

  5. php补充 扩展,php补充安装扩展支持

    一般我们编译安装php时,不知道到底要安装哪些扩展,即使想全部安装,也不能将所有扩展的扩展名都列举出来,所以一般是需要哪些扩展就安装哪些扩展,待后续需要某扩展时再补充编译进去 如果我们运行的php版本 ...

  6. 如何修改作者名称_PS2019中如何扩展文本选区 ps扩展文本选区的图文教程_photoshop教程...

    百度经验 发布时间:2020-11-26 17:13:48   作者:twotwoyourfour 我要评论 PS2019中如何扩展文本选区?有时我们在制作文字里需要扩展文字的选区,下文中为大家带来了 ...

  7. azure linux 多磁盘 lvm,EVE-NG扩展磁盘空间(扩展LVM卷)

    环境准备 系统环境:EVE-PRO-VM-2.0.4-20 前期是使用ova导入安装,精简置备,40G虚拟磁盘容量.空间不足,尝试了很久,记录操作记录如下:血泪教训:操作不当有可能引起数据丢失,需要提 ...

  8. 如何管理QQ浏览器的扩展工具 QQ浏览器扩展工具的管理方法

    QQ的庞大安装量带动了腾讯系的所有产品的安装量,QQ浏览器作为腾讯旗下开发的浏览工具,也拥有不俗的装机量.QQ浏览器不仅是沾了QQ的光,其自身实力也有不俗的,QQ浏览器的应用中心与其他浏览器的扩展中心 ...

  9. 字扩展、位扩展、字位同时扩展

    一.前言 我们都知道存储器是用来存储计算机的数据信息的,那那么海量的数据放在哪一个芯片呢?一个芯片肯定不够放,那怎么办呢?于是我们想到了把芯片组合起来.类似组装积木的过程.于是形成了字扩展.位扩展,字 ...

最新文章

  1. 使用FortJs使用现代JavaScript开发Node.js
  2. 计算机无线模块怎样关闭,无线模块插在电脑上出现感叹号如何解决?教你三招...
  3. 实例说明扩展JQuery方式
  4. 【STM32】F1 系列驱动全彩显示屏
  5. c# 水晶报表中处理TextObject
  6. aws 部署python lambda_python - 如何使用Aws Lambda(python)接收文件 - 堆栈内存溢出
  7. JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用
  8. 亚马逊云科技成为Meta关键长期战略云服务提供商;触宝科技延伸业务布局聚焦元宇宙 | 全球TMT...
  9. 清明上河图动图html,《清明上河图》“动”起来是啥样?快来海珠这里观赏!...
  10. Cadence Allegro如何复用设计参数?
  11. 一键实现证件照背景的替换,Python 制作可视化GUI界面真香啊
  12. 不小心把桌面上的计算机图标删了怎么办,如何删除桌面图标,不小心把桌面上的我的电脑图标删除了怎么办...
  13. CentOS配置互信
  14. 联通光猫由网关模式,改为桥接模式。
  15. The specified module could not be found的解决办法
  16. pixhawk 学习笔记
  17. Java中的IO、NIO、File、BIO、AIO详解
  18. 解析机器人与人工智能领域的创新创业
  19. git之bitbucket
  20. 写论文之mathpix snipping tool识别图片中的公式并通过MathType粘贴到word

热门文章

  1. SQLmap在进行SQL注入时的整个流程
  2. php日历排班表,排班表 : 轮班工作者必备的排班神器
  3. tplink无线桥接WDS小结
  4. Android 常用正则表达式,阿里巴巴内部spring宝典意外流出
  5. [BugKu Web]ez_serialize
  6. vb.net mysql 查询,mysql-vb.net查询以显示数据表的特定行[基本]
  7. R语言作图展示数据集中各样品的TMB,immunescore等
  8. 3_按钮开关控制的计算机串口通信
  9. 数据库实验-触发器实验
  10. thinkpad x12018换固态_ThinkPad X1 Carbon 2018.超强升级