Tôi đang cố gắng tạo một số ngẫu nhiên khác mỗi khi phương thức RandomNumber của tôi được gọi từ vòng lặp for của tôi. Ngay bây giờ, nó trả về cùng một số mỗi lần.Phương pháp RandomNumber trả về cùng một số mỗi lần gọi là
Đây là phương pháp randomNumber tôi:
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
Đây là bối cảnh Tôi đang sử dụng nó trong: (đó là một chút lộn xộn chỉ vì tôi đã rối tung với cố gắng để làm cho nó làm việc ....)
for (int i = 0; i < charsRaw.Length; i++)
{
int max = charsRaw.Length - 1;
int rand = 0;
rand = RandomNumber(0, max);
charsNew[i] = charsRaw[rand];
text2 += charsNew[i];
}
Tôi dường như không thể trả lại giá trị khác mỗi lần được gọi với vòng lặp for.
Mặc dù, khi tôi gắn một MessageBox.Show (rand.ToString()) sau văn bản2 + = charsNew [i], nó mang lại cho tôi một giá trị khác nhau mỗi lần và hoạt động theo cách tôi dự định. Lạ thật.
Cảm ơn! Eric
Cảm ơn! Điều này đã làm việc! – Eric
Đoạn cuối cùng là một chút sai lầm. new Random() thực hiện chính xác điều đó, nghĩa là gieo hạt giống với thời gian hiện tại. Vì bạn làm điều này trong một vòng lặp chặt chẽ, bạn sẽ nhận được nhiều trường hợp giống hệt nhau, tất nhiên, mang lại trình tự giống hệt nhau. Gieo hạt bằng tay với thời gian hiện tại không phục vụ để làm cho mọi thứ tốt hơn ở đây. Ngoài ra, bạn sẽ nhận được khá nhiều phụ thuộc tuyến tính trong hạt giống là một điều xấu cho ngẫu nhiên trong hầu hết các máy phát điện (xem http://portal.acm.org/citation.cfm?doid=1276927.1276928) – Joey
cuộc gọi tốt. tôi sẽ chỉnh sửa. – anthony