现在的位置: 首页 > 综合 > 正文

.NET(C#):一个更方便使用的多功能Random类型

2012年05月26日 ⁄ 综合 ⁄ 共 2286字 ⁄ 字号 评论关闭

曾经许多时候,需要随机生成一些东西,结果还得慢慢用那个.NET Framework中的Random类。后来为此麻烦自己慢慢写一个更方便的多功能Random类型,取名MyRandom,今天把它分享出来。

 

这个类的所有成员都是静态的,主要为了方便调用。当然如果你想对它生成多个实例,可以把所有static关键字去掉。

其次这个类就是对.NET中预定义的Random类的封装,所以一些Random类型不适合的地方此类同样会不适合,比如对安全强度需要很高的密码随机数生成,最好使用System.Security.Cryptography命名空间提供的RandomNumberGenerator类型。

 

对于.NET中的Random类型有的方法,此类型都有相应支持,比如提供种子,随机生成int, double, byte数组。下面就讲MyRandom这个类提供的其他更全面的方法。

 

 

 

返回目录

字符串相关操作

示例代码:

//随机生成11位数字

string str1 = MyRandom.String(StringRange.Digit, 11);

Console.WriteLine(str1);

//随机生成5位小写字母

string str2 = MyRandom.String(StringRange.Letter, 5).ToLower();

Console.WriteLine(str2);

//随机从指定字符串中生成10位字符数组

char[] chars = MyRandom.CharArray("Mgen!", 10);

Console.WriteLine(new string(chars));

//随机从字符串中返回一个字符

char c = MyRandom.CharFromString("Mgen");

Console.WriteLine(c);

 

可能的一种输出:

76593373627

qfdrt

gngeMgnM!!

g

 

 

返回目录

数组相关操作

示例代码:

int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

 

//随机返回数组中的一个成员

int i1 = MyRandom.ArrayMember(arr);

Console.WriteLine(i1);

//随机返回数组指定范围内的一个成员

int i2 = MyRandom.ArrayMember(arr, 2, 3);

Console.WriteLine(i2);

 

//根据指定数组的范围随机返回一个指定长度的新数组

//变量newArray1长度为5,成员都是arr变量中随机的成员

int[] newArray1 = MyRandom.ArrayFixedSegment(arr, 5);

Console.WriteLine(string.Join(", ", newArray1));

 

//根据指定数组的范围随机返回一个动态长度的新数组

//变量newArray2数组长度是随机的(1到10范围内),数组成员是arr数组前三个成员中随机的一个

int[] newArray2 = MyRandom.ArrayDynamicSegment(arr, 0, 3, 10, 1);

Console.WriteLine(string.Join(", ", newArray2));

 

//随机填充一个字节(或整数)数组

byte[] bytes = new byte[10];

MyRandom.ByteArray(bytes);

Console.WriteLine(BitConverter.ToString(bytes));

 

//随机返回一个字节(或整数)数组

var bytes2 = MyRandom.ByteArray(5);

Console.WriteLine(BitConverter.ToString(bytes2));

 

可能的一种输出:

5

5

8, 3, 5, 6, 4

1, 2, 3, 3, 1, 2, 3, 2, 1, 2

3C-90-95-AB-65-8F-6B-5F-4F-1F

50-B2-A9-F4-78

 

 

返回目录

枚举相关操作

示例代码:

//随机生成枚举值

for (int i = 0; i < 3; i++)

{

    Environment.SpecialFolder sf = MyRandom.Enumeration<Environment.SpecialFolder>();

    Console.WriteLine(sf);

}

 

可能的输出:

DesktopDirectory

ProgramFiles

LocalApplicationData

 

 

返回目录

循环相关操作

示例代码:

//随机执行1-5次操作

MyRandom.Action(() => Console.WriteLine("操作1"), 5);

 

//随机执行0-3次操作(带有索引值)

MyRandom.Action((idx) => Console.WriteLine("操作2,当前是第{0}个", idx), 3, 0);

 

//随机执行2-4次操作(带有索引值,带有总共次数)

MyRandom.Action((idx, total) => Console.WriteLine("操作3,当前是第{0}个,总共{1}个", idx, total), 4, 2);

 

 

可能的输出:

操作1

操作1

操作2,当前是第0个

操作2,当前是第1个

操作3,当前是第0个,总共3个

操作3,当前是第1个,总共3个

操作3,当前是第2个,总共3个

 

 

返回目录

源代码下载

 

当前版本的程序和源代码下载

下载地址

注意:此为微软SkyDrive存档,请用浏览器直接下载,用某些下载工具可能无法下载

文件类型:.cs文件

抱歉!评论已关闭.