internal static void AllNValuesCanChangePositions(this Assert _, IShuffle <ValuePriorityPair <int> > shuffle) { var elements = new ValuePriorityPairs <int> { new ValuePriorityPair <int>(1, 1), new ValuePriorityPair <int>(2, 2), new ValuePriorityPair <int>(3, 3), new ValuePriorityPair <int>(4, 4), new ValuePriorityPair <int>(5, 5), }; var value1Set = new HashSet <int>(); var value2Set = new HashSet <int>(); var value3Set = new HashSet <int>(); for (var i = 0; i < _iterations; i++) { var shuffled = shuffle.Shuffle(elements, 3).ToList(); value1Set.Add(shuffled[0].Value); value2Set.Add(shuffled[1].Value); value3Set.Add(shuffled[2].Value); } Assert.AreEqual(elements.Count(), value1Set.Count); Assert.AreEqual(elements.Count(), value2Set.Count); Assert.AreEqual(elements.Count(), value3Set.Count); }
/// <summary> /// Initializes a new instance of the <see cref="DefaultPicker{T}"/> class. /// </summary> /// <param name="rng">The random number generator.</param> /// <param name="pairs">The value-priority paris to pick from.</param> /// <param name="numberOfElements">The number of elements to pick.</param> public DefaultPicker(IRandomNumberGenerator rng, ValuePriorityPairs <T> pairs, int numberOfElements) { _rng = rng; _numberOfElements = numberOfElements; _pairs = pairs; }
/// <summary> /// Initializes a new instance of the <see cref="DefaultPicker{T}"/> class. /// </summary> /// <param name="rng">The random number generator.</param> /// <param name="pairs">The value-priority paris to pick from.</param> public DefaultPicker(IRandomNumberGenerator rng, ValuePriorityPairs <T> pairs) : this(rng, pairs, 1) { }