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生成随机数与 ...
随机推荐
- WPF 微信 MVVM
公司的同事离职了,接下来的日子可能会忙碌,能完善DEMO的时间也会少了,因此,把做的简易DEMO整体先记录一下,等后续不断的完善. 参考两位大神的日志:WEB版微信协议部分功能分析.[完全开源]微信客 ...
- jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能
▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...
- 【NLP】十分钟快览自然语言处理学习总结
十分钟学习自然语言处理概述 作者:白宁超 2016年9月23日00:24:12 摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛.笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文 ...
- Axure 8.0.0.3312可用注册码
用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxGU 用户名:axureuser 序列号:8wFfI ...
- VSCode添加Sciter脚本Tiscript高亮支持
Sciter中的Tiscript脚本不是标准的Javascript,是对Javascript的扩展.所以在常用的编辑器和IDE上对于高亮的支持很不好. 不过在Sciter论坛中找到了在VSCode上的 ...
- CSS3自定义滚动条样式 -webkit-scrollbar(转)
有没有觉得浏览器自带的原始滚动条很不美观,同时也有看到很多网站的自定义滚动条显得高端,就连chrome32.0开发板都抛弃了原始的滚动条,美观多了.那webkit浏览器是如何自定义滚动条的呢? 前言 ...
- arcgis api for js入门开发系列七图层控制(含源代码)
上一篇实现了demo的地图分屏对比模块,本篇新增图层控制模块,截图如下(源代码见文章底部): 图层控制模块实现的思路如下: 1.在地图配置文件map.config.js里面配置图层目录树节点信息,作为 ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!
这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /et ...
- BZOJ 3504: [Cqoi2014]危桥 [最大流]
3504: [Cqoi2014]危桥 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1407 Solved: 703[Submit][Status] ...