DotNet生成随机数的一些方法
在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法。
1.随机布尔值:
- /// <summary>
- /// 随机布尔值
- /// </summary>
- /// <param name="random"></param>
- /// <returns>随机布尔值</returns>
- public static bool NextBoolean(this Random random)
- {
- if (random == null)
- {
- throw new ArgumentNullException("random");
- }
- return random.NextDouble() > 0.5;
- }
2.指定枚举类型的随机枚举值:
- /// <summary>
- /// 指定枚举类型的随机枚举值
- /// </summary>
- /// <param name="random"></param>
- /// <returns>指定枚举类型的随机枚举值</returns>
- public static T NextEnum<T>(this Random random) where T : struct
- {
- var type = typeof(T);
- if (!type.IsEnum)
- {
- throw new InvalidOperationException();
- }
- var array = System.Enum.GetValues(type);
- var index = random.Next(array.GetLowerBound(), array.GetUpperBound() + );
- return (T)array.GetValue(index);
- }
3.随机数填充的指定长度的数组:
- /// <summary>
- /// 随机数填充的指定长度的数组
- /// </summary>
- /// <param name="random"></param>
- /// <param name="length">数组长度</param>
- /// <returns>随机数填充的指定长度的数组</returns>
- public static byte[] NextBytes(this Random random, int length)
- {
- if (length < )
- {
- throw new ArgumentOutOfRangeException("length");
- }
- var data = new byte[length];
- random.NextBytes(data);
- return data;
- }
4. 数组中的随机元素:
- /// <summary>
- /// 数组中的随机元素
- /// </summary>
- /// <typeparam name="T">元素类型</typeparam>
- /// <param name="random"></param>
- /// <param name="items">元素数组</param>
- /// <returns>元素数组中的某个随机项</returns>
- public static T NextItem<T>(this Random random, T[] items)
- {
- return items[random.Next(, items.Length)];
- }
5.指定时间段内的随机时间值:
- /// <summary>
- /// 指定时间段内的随机时间值
- /// </summary>
- /// <param name="random"></param>
- /// <param name="minValue">时间范围的最小值</param>
- /// <param name="maxValue">时间范围的最大值</param>
- /// <returns>指定时间段内的随机时间值</returns>
- public static DateTime NextDateTime(this Random random, DateTime minValue, DateTime maxValue)
- {
- var ticks = minValue.Ticks + (long)((maxValue.Ticks - minValue.Ticks) * random.NextDouble());
- return new DateTime(ticks);
- }
6. 随机时间值:
- /// <summary>
- /// 随机时间值
- /// </summary>
- /// <param name="random"></param>
- /// <returns>随机时间值</returns>
- public static DateTime NextDateTime(this Random random)
- {
- return NextDateTime(random, DateTime.MinValue, DateTime.MaxValue);
- }
7.获取指定的长度的随机数字字符串:
- /// <summary>
- /// 获取指定的长度的随机数字字符串
- /// </summary>
- /// <param name="random"></param>
- /// <param name="length">要获取随机数长度</param>
- /// <returns>指定长度的随机数字符串</returns>
- public static string GetRandomNumberString(this Random random, int length)
- {
- if (length < )
- {
- throw new ArgumentOutOfRangeException("length");
- }
- char[] pattern = { '', '', '', '', '', '', '', '', '', '' };
- var result = "";
- var n = pattern.Length;
- for (var i = ; i < length; i++)
- {
- var rnd = random.Next(, n);
- result += pattern[rnd];
- }
- return result;
- }
8.获取指定的长度的随机字母字符串:
- /// <summary>
- /// 获取指定的长度的随机字母字符串
- /// </summary>
- /// <param name="random"></param>
- /// <param name="length">要获取随机数长度</param>
- /// <returns>指定长度的随机字母组成字符串</returns>
- public static string GetRandomLetterString(this Random random, int length)
- {
- if (length < )
- {
- throw new ArgumentOutOfRangeException("length");
- }
- char[] pattern =
- {
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
- 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
- };
- var result = "";
- var n = pattern.Length;
- for (var i = ; i < length; i++)
- {
- var rnd = random.Next(, n);
- result += pattern[rnd];
- }
- return result;
- }
9.获取指定的长度的随机字母和数字字符串:
- /// <summary>
- /// 获取指定的长度的随机字母和数字字符串
- /// </summary>
- /// <param name="random"></param>
- /// <param name="length">要获取随机数长度</param>
- /// <returns>指定长度的随机字母和数字组成字符串</returns>
- public static string GetRandomLetterAndNumberString(this Random random, int length)
- {
- if (length < )
- {
- throw new ArgumentOutOfRangeException("length");
- }
- char[] pattern =
- {
- '', '', '', '', '', '', '', '', '', '',
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
- 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
- };
- var result = "";
- var n = pattern.Length;
- for (var i = ; i < length; i++)
- {
- var rnd = random.Next(, n);
- result += pattern[rnd];
- }
- return result;
- }
生成随机数的方式较多,可根据具体的要求来生成对应的随机数。
DotNet生成随机数的一些方法的更多相关文章
- PyTorch 常用方法总结1:生成随机数Tensor的方法汇总(标准分布、正态分布……)
在使用PyTorch做实验时经常会用到生成随机数Tensor的方法,比如: torch.rand() torch.randn() torch.normal() torch.linespace() 在很 ...
- 关于使用jmeter函数助手生成随机数的使用方法
记录自己的生活! 1.使用jmeter函数助手的生成随机数的方法,主要包含以下几个函数: [_Random] [_RandomString] 2.关于[_Random]函数的说 ...
- 简单生成随机数id的方法
近期项目中需要生成不同的id,之前都是使用UUID来实现的,现在需求是只要8位数的,也就是说用户量是有限的,暂时是不需要太多的,所以就简单的使用Set实现了这一功能. /** * 生成8位不重复随机i ...
- pytorch 生成随机数
在使用PyTorch做实验时经常会用到生成随机数Tensor的方法,比如: torch.rand() torch.randn() torch.normal() torch.linespace() 在很 ...
- php生成随机数的三种方法
php生成随机数的三种方法 如何用php生成1-10之间的不重复随机数? 例1,使用shuffle函数生成随机数. <?php$arr=range(1,10);shuffle($arr);for ...
- js生成随机数的方法实例总结
js生成随机数主要用到了内置的Math对象的random()方法.用法如:Math.random().它返回的是一个 0 ~ 1 之间的随机数.有了这么一个方法,那生成任意随机数就好理解了.比如实际中 ...
- js生成随机数的方法小结
js生成随机数主要用到了内置的Math对象的random()方法.用法如:Math.random().它返回的是一个 0 ~ 1 之间的随机数.有了这么一个方法,那生成任意随机数就好理解了.比如实际中 ...
- js生成随机数的方法实例总结 [收藏]
js生成随机数的方法实例总结 js生成随机数主要用到了内置的Math对象的random()方法.用法如:Math.random().它返回的是一个 0 ~ 1 之间的随机数.有了这么一个方法,那生成任 ...
- Python生成随机数的方法
这篇文章主要介绍了Python生成随机数的方法,有需要的朋友可以参考一下 如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与 ...
随机推荐
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- .NET 对接JAVA 使用Modulus,Exponent RSA 加密
最近有一个工作是需要把数据用RSA发送给Java 虽然一开始标准公钥 net和Java RSA填充的一些算法不一样 但是后来这个坑也补的差不多了 具体可以参考 http://www.cnblogs. ...
- 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?
ASP.NET Core管道虽然在结构组成上显得非常简单,但是在具体实现上却涉及到太多的对象,所以我们在 "通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流 ...
- 做一个gulp+webpack+vue的单页应用开发架子
1.目标 最近项目上的事情不多,根据我自己的开发习惯,决定开发一些简单的开发架子,方便以后事情多的时候直接套用.本文讲的一个gulp+webpack+vue的单页应用架子,想要达到的目的: 可以通过命 ...
- vue.js学习笔记
有了孩子之后,元旦就哪也去不了了(孩子太小),刚好利用一些时间,来公司充充电补补课,学习学习新技术,在这里做一个整理和总结.(选择的东西,既然热爱就把他做好吧!). 下来进入咱们的学习环节: 一.从H ...
- [原] 利用 OVS 建立 VxLAN 虚拟网络实验
OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...
- 修改session垃圾回收几率
<?php //修改session垃圾回收几率 ini_set('session.gc_probability','1'); ini_set('session.gc_divisor','2'); ...
- equals变量在前面或者在后面有什么区别吗?这是一个坑点
我就不废话那么多,直接上代码: package sf.com.mainTest; public class Test { public static void main(String[] args) ...
- 直播推流端弱网优化策略 | 直播 SDK 性能优化实践
弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技 ...
- Oracle:一个用户操作多个表空间中表的问题(转)
原文地址:http://blog.csdn.net/shmiloy001/article/details/6287317 首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的 ...