thể trùng lặp:
Random number generator only generating one random numberMã chỉ chạy đúng khi bước qua nó bằng trình gỡ lỗi?
tôi một chút bối rối với vài khoảnh khắc này đây. Tôi có đoạn mã sau:
public blockType generateRandomBlock()
{
Random random = new Random();
int makeBlockOfType = random.Next(0, 100);
blockType t = blockType.normal;
if (makeBlockOfType <= 80 && makeBlockOfType >= 60)
{
t = blockType.blue;
}
else if (makeBlockOfType > 80 && makeBlockOfType <= 95)
{
t = blockType.orange;
}
else if (makeBlockOfType > 95 && makeBlockOfType <= 100)
{
t = blockType.green;
}
return t;
}
Khá đơn giản, nó trả về một giá trị enum
dựa trên một số được tạo ngẫu nhiên (dựa trên thời gian hệ thống). Thật không may cho một số lý do lẻ, tôi có tất cả các khối hoặc một màu hoặc khác mặc dù điều này chạy cho mỗi khối duy nhất được đưa vào trò chơi. Tuy nhiên, khi tôi bước qua điều này với trình gỡ lỗi và sau đó xem kết quả sau khi chạy một số, tôi thấy rằng các khối bây giờ đa màu dựa trên cơ hội được cung cấp. Tôi hơi bối rối về lý do tại sao điều này xảy ra.
Đối với điều này tôi đang sử dụng MonoGame sử dụng trình biên dịch Mono thay vì trình biên dịch Microsoft. Đây có phải là vấn đề không? Tôi đã cố gắng để đặt mã này inline vào constructor từ nơi nó đang được gọi nhưng tôi nhận được kết quả tương tự (tôi đoán trình biên dịch inlines anyways mã).
Tôi đã cố gắng khởi động lại Visual Studio riêng biệt thay vì cho phép chạy thực hiện việc xây dựng; không thay đổi.
Bất kỳ đề xuất và trợ giúp nào được đánh giá cao!
cố gắng để di chuyển tạo ra ngẫu nhiên ra khỏi phương pháp, mà nên giúp đỡ. –
'hạt giống mới ngẫu nhiên()' sử dụng thời gian, không đổi trong vài mili giây. – CodesInChaos
Lý do nó hoạt động trong gỡ lỗi là có thời gian giữa các cuộc gọi và ngẫu nhiên thực sự có hạt giống khác nhau. – Archy