Các lớp ngẫu nhiên được định nghĩa trong NET. Framework cung cấp chức năng để tạo ra các số ngẫu nhiên. Các constructors lớp Random có hai form overloaded. Phải mất không có giá trị hoặc phải mất một giá trị giống. Các lớp ngẫu nhiên có ba phương thức - Next, NextBytes, và NextDouble. Phương thức Next trả về một số ngẫu nhiên, NextBytes trả về một mảng byte chứa số ngẫu nhiên, và NextDouble trả về một số ngẫu nhiên giữa 0.0 và 1.0. Phương thức Next có ba hình thức overloaded và cho phép bạn thiết lập phạm vi tối thiểu và tối đa của số ngẫu nhiên. Các mã sau đây trả về một số ngẫu nhiên:
int num = random.Next();
Mã sau đây trả về một số ngẫu nhiên ít hơn 1000.
int num = random.Next(1000);
Mã sau đây trả về một số ngẫu nhiên nằm giữa khoảng min và max:
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Tại một số điểm, bạn cũng có thể muốn tạo ra các chuỗi ngẫu nhiên. Tôi đã tạo ra một phương thức, trong đó có tham số đầu là kích thước của chuỗi và tham số thứ hai nếu bạn muốn chuỗi là chữ thường.
/// <summary>
/// Tạo ra một chuỗi ngẫu nhiên với độ dài cho trước
/// </summary>
/// <param name="size">Kích thước của chuỗi </param>
/// <param name="lowerCase">Nếu đúng, tạo ra chuỗi chữ thường</param>
/// <returns>Random string</returns>
private string RandomString(int size, bool lowerCase)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char ch ;
for(int i=0; i<size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))) ;
builder.Append(ch);
}
if(lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
Bạn thậm chí có thể kết hợp hai phương thức - randomNumber và RandomString để tạo ra một sự kết hợp của chuỗi và số ngẫu nhiên.
Ví dụ, đoạn code sau tạo ra một mật khẩu có độ dài 10 với 4 chữ cái đầu tiên chữ thường, 4 chữ cái tiếp theo là số, và 2 chữ cái cuối cùng là chữ hoa.
public string GetPassword()
{
StringBuilder builder = new StringBuilder();
builder.Append(RandomString(4, true));
builder.Append(RandomNumber(1000, 9999));
builder.Append(RandomString(2, false));
return builder.ToString();
}