Có chuỗi lặp lại 'ngẫu nhiên' hữu ích trong các trường hợp thử nghiệm.
Ví dụ: bạn có thể sử dụng nó trong thử nghiệm công cụ trò chơi để đảm bảo rằng AI đang chọn đúng mục tiêu hoặc đường dẫn - ngay cả khi nó có đánh giá đường dẫn ngẫu nhiên.
Đây là một ví dụ rất đơn giản. Không có vấn đề bao nhiêu lần bạn chạy thử nghiệm này, nó sẽ luôn luôn chọn cùng một ba thẻ khi đưa ra cùng một cơ sở số ngẫu nhiên máy phát điện. Điều này có thể hữu ích để đảm bảo rằng trình tạo số ngẫu nhiên đang được sử dụng là trình cung cấp được cung cấp. Và, vì một lý do nào đó nếu một bộ tạo số ngẫu nhiên mới được giới thiệu mà không làm thay đổi phép thử, thì phép thử sẽ thất bại.
[TestMethod]
public void TestRandomPicking()
{
Random random = new Random(1);
Deck deck = new Deck(random);
Assert.AreEqual(3, deck.PickCard().Value);
Assert.AreEqual(1, deck.PickCard().Value);
Assert.AreEqual(5, deck.PickCard().Value);
}
public class Deck
{
public Deck()
{
_randomizer = new Random();
}
public Deck(Random randomizer)
{
_randomizer = randomizer;
}
Random _randomizer;
private List<Card> _cards = new List<Card>
{
new Card {Value = 1},
new Card {Value = 2},
new Card {Value = 3},
new Card {Value = 4},
new Card {Value = 5},
new Card {Value = 6},
new Card {Value = 7},
new Card {Value = 8},
new Card {Value = 9},
new Card {Value = 10}
};
private List<Card> Cards { get { return _cards; } }
public Card PickCard()
{
return Cards[_randomizer.Next(0, Cards.Count - 1)];
}
}
public class Card
{
public int Value { get; set; }
}
Nguồn
2011-02-08 14:09:07
Và trong một số ứng dụng có thể lặp lại là không cần thiết. Tôi có thể nghĩ về những tình huống mà bạn muốn gieo hạt theo cách thủ công, nhưng tôi chưa bao giờ cá nhân cần thiết để đặt một cách rõ ràng. – Davy8
@ Davy8 - điều đó rất đúng - trong hầu như tất cả các ứng dụng của tôi, tôi cũng không cần một hạt giống, nhưng 'Random' vẫn bao gồm chức năng đó. – BrokenGlass
Tôi có một chương trình chó đua, di chuyển ngẫu nhiên và một sẽ thắng. Là giải pháp để làm cho cùng một hạt giống ?? –