public void TestCardinality() { var strategy = new ProportionSubsetSelectionStrategy(0.1, RandomDefaults.CreateRandomSource()); for (int i = 0; i < 100; i++) { int[] idxArr = strategy.SelectSubset(i); int expectedCardinalityMin = (int)Math.Floor(i * 0.1); int expectedCardinalityMax = (int)Math.Ceiling(i * 0.1); Assert.IsTrue(idxArr.Length >= expectedCardinalityMin && idxArr.Length <= expectedCardinalityMax); } }
public void TestUniqueness() { var strategy = new ProportionSubsetSelectionStrategy(0.66, RandomDefaults.CreateRandomSource()); for (int i = 0; i < 20; i++) { int[] idxArr = strategy.SelectSubset(50); HashSet <int> idxSet = new HashSet <int>(); for (int j = 0; j < idxArr.Length; j++) { int val = idxArr[j]; Assert.IsFalse(idxSet.Contains(val)); idxSet.Add(val); } } }
public void SelectSubset_Uniqueness() { IRandomSource rng = RandomDefaults.CreateRandomSource(); var strategy = new ProportionSubsetSelectionStrategy(0.66); for (int i = 0; i < 20; i++) { int[] idxArr = strategy.SelectSubset(50, rng); HashSet <int> idxSet = new(); for (int j = 0; j < idxArr.Length; j++) { int val = idxArr[j]; Assert.DoesNotContain(val, idxSet); idxSet.Add(val); } } }