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生成随机数与 ...
随机推荐
- [APUE]UNIX进程的环境(上)
一. 前言 本章将学习:当执行程序时,其main函数是如何被调用的,命令行参数是如何传送给执行程序的,典型的存储器布局是什么样式,如何分配另外的存储空间,进程如何使用环境变量,进程终止的不同方式等.另 ...
- [干货来袭]MSSQL Server on Linux预览版安装教程(先帮大家踩坑)
前言 昨天晚上微软爸爸开了全国开发者大会,会上的内容,我就不多说了,园子里面很多.. 我们唐总裁在今年曾今透漏过SQL Server love Linux,果不其然,这次开发者大会上就推出了MSSQL ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- IOS开发之—— 在AFN基础上进行的网络请求的封装
网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...
- jQuery.data() 使用方法
data() 方法向被选元素附加数据,或者从被选元素获取数据.在实际开发中,可以用来记录上一步操作某一对象的值,来给下一步操作做一些判断 $("#btn1").click(func ...
- Xamarin. Android实现下拉刷新功能
PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...
- 【腾讯Bugly干货分享】移动客户端中高效使用SQLite
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b57f2a0703f7d31b9a3932 作者:赵丰 导语 iOS 程序能 ...
- ZooKeeper1 利用虚拟机搭建自己的ZooKeeper集群
前言: 前段时间自己参考网上的文章,梳理了一下基于分布式环境部署的业务系统在解决数据一致性问题上的方案,其中有一个方案是使用ZooKeeper,加之在大数据处理中,ZooKeeper确实起 ...
- Ford-Fulkerson 最大流算法
流网络(Flow Networks)指的是一个有向图 G = (V, E),其中每条边 (u, v) ∈ E 均有一非负容量 c(u, v) ≥ 0.如果 (u, v) ∉ E 则可以规定 c(u, ...