曾经许多时候,需要随机生成一些东西,结果还得慢慢用那个.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个
返回目录 源代码下载
:D 作者:Mgen
|
|