30/09/2018, 20:17

Hỏi về Random trong C# luôn trả về kết quả giống nhau?

Mình muốn hỏi tại sao đoạn code dưới đây 5 lần gọi phương thức RanTest() mà return random.Next(100) lại trả về kết quả giống nhau? Cảm ơn mọi người!

    static void Main(string[] args)
    {
        ClassTest[] ct = new ClassTest[5];
        for (int i = 0; i < 5; i++)
        {
            ct[i] = new ClassTest();
        }
        for (int i = 0; i < 5; i++)
        {
            Console.WriteLine(ct[i].RanTest());
        }
        Console.ReadKey();
    }

class ClassTest
{
    public Random random = new Random();
    public int RanTest()
    {
        return random.Next(100);
    }
}
Nguyen Ca viết 22:26 ngày 30/09/2018

ct[i] = new ClassTest();

Sai ở đây, khi tạo như vậy, mỗi lần new lại new 1 instance random. nên nhớ instance của random được tạo dựa trên ngày giờ hiện tại từ đó random ra sô ngẫu nhiên, vong for chạy nhanh nên random lấy ngày giờ giống nhau nên ra cùng kết quả.
Giải pháp:
Tao 1 instance random bên ngoài và truyên vào như tham số [quote=“invi, post:1, topic:23707”]
ct[i].RanTest(rd)
[/quote]

Bài liên quan
0