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

來源:互聯網
上載者:User

曾經許多時候,需要隨機產生一些東西,結果還得慢慢用那個.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檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.