曾經(jīng)許多時(shí)候,需要隨機(jī)生成一些東西,結(jié)果還得慢慢用那個(gè).NET Framework中的Random類(lèi)。后來(lái)為此麻煩自己慢慢寫(xiě)一個(gè)更方便的多功能Random類(lèi)型,取名MyRandom,今天把它分享出來(lái)。
這個(gè)類(lèi)的所有成員都是靜態(tài)的,主要為了方便調(diào)用。當(dāng)然如果你想對(duì)它生成多個(gè)實(shí)例,可以把所有static關(guān)鍵字去掉。 其 次這個(gè)類(lèi)就是對(duì).NET中預(yù)定義的Random類(lèi)的封裝,所以一些Random類(lèi)型不適合的地方此類(lèi)同樣會(huì)不適合,比如對(duì)安全強(qiáng)度需要很高的密碼隨機(jī)數(shù)生 成,最好使用System.Security.Cryptography命名空間提供的RandomNumberGenerator類(lèi)型。
對(duì)于.NET中的Random類(lèi)型有的方法,此類(lèi)型都有相應(yīng)支持,比如提供種子,隨機(jī)生成int, double, byte數(shù)組。下面就講MyRandom這個(gè)類(lèi)提供的其他更全面的方法。
返回目錄 字符串相關(guān)操作示例代碼: //隨機(jī)生成11位數(shù)字 string str1 = MyRandom.String(StringRange.Digit, 11); Console.WriteLine(str1); //隨機(jī)生成5位小寫(xiě)字母 string str2 = MyRandom.String(StringRange.Letter, 5).ToLower(); Console.WriteLine(str2); //隨機(jī)從指定字符串中生成10位字符數(shù)組 char[] chars = MyRandom.CharArray("Mgen!", 10); Console.WriteLine(new string(chars)); //隨機(jī)從字符串中返回一個(gè)字符串 char c = MyRandom.CharFromString("Mgen"); Console.WriteLine(c);
可能的一種輸出: 76593373627 qfdrt gngeMgnM!! g
返回目錄 數(shù)組相關(guān)操作示例代碼: int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//隨機(jī)返回?cái)?shù)組中的一個(gè)成員 int i1 = MyRandom.ArrayMember(arr); Console.WriteLine(i1); //隨機(jī)返回?cái)?shù)組指定范圍內(nèi)的一個(gè)成員 int i2 = MyRandom.ArrayMember(arr, 2, 3); Console.WriteLine(i2);
//根據(jù)指定數(shù)組的范圍隨機(jī)返回一個(gè)指定長(zhǎng)度的新數(shù)組 //變量newArray1長(zhǎng)度為5,成員都是arr變量中隨機(jī)的成員 int[] newArray1 = MyRandom.ArrayFixedSegment(arr, 5); Console.WriteLine(string.Join(", ", newArray1));
//根據(jù)指定數(shù)組的范圍隨機(jī)返回一個(gè)動(dòng)態(tài)長(zhǎng)度的新數(shù)組 //變量newArray2數(shù)組長(zhǎng)度是隨機(jī)的(1到10范圍內(nèi)),數(shù)組成員是arr數(shù)組前三個(gè)成員中隨機(jī)的一個(gè) int[] newArray2 = MyRandom.ArrayDynamicSegment(arr, 0, 3, 10, 1); Console.WriteLine(string.Join(", ", newArray2));
//隨機(jī)填充一個(gè)字節(jié)(或整數(shù))數(shù)組 byte[] bytes = new byte[10]; MyRandom.ByteArray(bytes); Console.WriteLine(BitConverter.ToString(bytes));
//隨機(jī)返回一個(gè)字節(jié)(或整數(shù))數(shù)組 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
返回目錄 枚舉相關(guān)操作示例代碼: //隨機(jī)生成枚舉值 for (int i = 0; i < 3; i++) { Environment.SpecialFolder sf = MyRandom.Enumeration<Environment.SpecialFolder>(); Console.WriteLine(sf); }
可能的輸出: DesktopDirectory ProgramFiles LocalApplicationData
返回目錄 循環(huán)相關(guān)操作示例代碼: //隨機(jī)執(zhí)行1-5次操作 MyRandom.Action(() => Console.WriteLine("操作1"), 5);
//隨機(jī)執(zhí)行0-3次操作(帶有索引值) MyRandom.Action((idx) => Console.WriteLine("操作2,當(dāng)前是第{0}個(gè)", idx), 3, 0);
//隨機(jī)執(zhí)行2-4次操作(帶有索引值,帶有總共次數(shù)) MyRandom.Action((idx, total) => Console.WriteLine("操作3,當(dāng)前是第{0}個(gè),總共{1}個(gè)", idx, total), 4, 2);
可能的輸出: 操作1 操作1 操作2,當(dāng)前是第0個(gè) 操作2,當(dāng)前是第1個(gè) 操作3,當(dāng)前是第0個(gè),總共3個(gè) 操作3,當(dāng)前是第1個(gè),總共3個(gè) 操作3,當(dāng)前是第2個(gè),總共3個(gè)
返回目錄 源代碼下載
:D 作者:Mgen
|
|
來(lái)自: 緣木求魚(yú)001 > 《C#》