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生成随机数与 ...
随机推荐
- AndroidTips-052:.aar文件依赖
aar aar 文件是android 类库项目的输出文件,其中可以包含普通的.class,清单,以及android项目特有的资源文件. 使用方式 将.aar文件放在在自己项目的libs目录下 在gra ...
- C语言 · Anagrams问题
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...
- JS判断鼠标进入容器方向的方法和分析window.open新窗口被拦截的问题
1.鼠标进入容器方向的判定 判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来确定.这样的做法比较繁琐,下面介绍两种 ...
- [原] KVM 虚拟化原理探究(4)— 内存虚拟化
KVM 虚拟化原理探究(4)- 内存虚拟化 标签(空格分隔): KVM 内存虚拟化简介 前一章介绍了CPU虚拟化的内容,这一章介绍一下KVM的内存虚拟化原理.可以说内存是除了CPU外最重要的组件,Gu ...
- 我大中华微软MVP中国区人才库
刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...
- 【JavaScript】innerHTML、innerText和outerHTML的用法区别
用法: <div id="test"> <span style="color:red">test1</span> tes ...
- BPM助力企业数字化转型
自九十年代末,流程管理开始引入国内,至今已经有20多年的历史了,由最初的部门级应用向企业级应用转变,大家的认知也经历了一系列的发展变化.不同阶段的信息化水平对企业的流程以及BPM平台也提出了不同的需求 ...
- [Android]使用Dagger 2进行依赖注入 - Producers(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6234811.html 使用Dagger 2进行依赖注入 - P ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- 搭建个人wordpress博客(小白教程)
新浪sae平台现在是有个免费个人空间使用,现在,教您如何使用该平台搭建属于自己的个人网站,本教程以wordpress程序安装包搭建个人网站. 申请新浪云账号 如果我们使用SAE新浪云计算平台作为服务器 ...