Наличие повторяющейся «случайной» последовательности полезно при тестировании сценариев.
Например, вы можете использовать его при тестировании игрового движка, чтобы гарантировать, что ИИ правильно выбирает цели или пути, даже если он имеет случайную оценку пути.
Вот очень упрощенный пример. Независимо от того, сколько раз вы запускаете этот тест, он всегда будет выбирать одни и те же три карты при использовании одного и того же базового генератора случайных чисел. Это может быть полезно для обеспечения использования генератора случайных чисел. И по какой-то причине, если новый генератор случайных чисел был введен без изменения теста, то тест завершится неудачей.
[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; }
}
И в некоторых приложениях, повторяемых, не требуется. Я могу думать о ситуациях, когда вы захотите засеять его вручную, но мне никогда не нужно было явно устанавливать его. – Davy8
@ Davy8 - это очень верно - практически во всех моих приложениях мне тоже не нужно семя, но «Random» по-прежнему покрывает эту функциональность. – BrokenGlass
У меня есть программа гоночных собак, которые перемещаются случайным образом, и один победит. Является ли решение делать одно и то же семя? –