Câu trả lời:
Bạn co thể thử
Random r = new Random();
int rInt = r.Next(0, 100); //for ints
int range = 100;
double rDouble = r.NextDouble()* range; //for doubles
Có một cái nhìn
Lớp ngẫu nhiên , Phương pháp ngẫu nhiên . Phương thức tiếp cận (Int32, Int32) và Phương pháp ngẫu nhiên.
Random()
sử dụng một hạt giống phụ thuộc vào thời gian, nhưng viết ra một cách rõ ràng là tốt hơn cho khả năng đọc.
Hãy thử mã dưới đây.
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
Cái gì đó như:
var rnd = new Random(DateTime.Now.Millisecond);
int ticks = rnd.Next(0, 3000);
DateTime.Now.Millisecond
?
Random
đã được gieo hạt giống với một giá trị hệ thống và Millisecond
chỉ là một số trong khoảng từ 0 đến 999. Nếu cặp dòng này luôn ở cùng nhau trong mã, sẽ chỉ có 1000 giá trị có thể rnd.Next
do hạt giống được đặt lại mỗi lần. Cùng một hạt giống, cùng một số ngẫu nhiên. Tôi sẽ bỏ hạt giống thủ công.
Environment.TickCount
.
Sử dụng:
Random r = new Random();
int x= r.Next(10);//Max range
Đối với những người đọc trong tương lai nếu bạn muốn một số ngẫu nhiên trong một phạm vi, hãy sử dụng mã sau đây:
public double GetRandomNumberInRange(double minNumber, double maxNumber)
{
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
}
return new Random().NextDouble() * (maxNumber - minNumber) + minNumber;
Ngoài Lớp ngẫu nhiên , tạo số nguyên và nhân đôi, hãy xem xét:
Đây là phiên bản cập nhật từ câu trả lời của Darrelk . Nó được thực hiện bằng các phương thức mở rộng C # . Nó không phân bổ bộ nhớ ( new Random () ) mỗi khi phương thức này được gọi.
public static class RandomExtensionMethods
{
public static double NextDoubleRange(this System.Random random, double minNumber, double maxNumber)
{
return random.NextDouble() * (maxNumber - minNumber) + minNumber;
}
}
Cách sử dụng (đảm bảo nhập không gian tên có chứa lớp RandomExtensionMethods):
var random = new System.Random();
double rx = random.NextDoubleRange(0.0, 1.0);
double ry = random.NextDoubleRange(0.0f, 1.0f);
double vx = random.NextDoubleRange(-0.005f, 0.005f);
double vy = random.NextDoubleRange(-0.005f, 0.005f);
double rDouble = (r.NextDouble()*2)-1.0;