Exemplo n.º 1
0
        private static RndResult <IEnumerable <A> > NoRepeat <A>(int count, int tries, IRnd <A> rnd) where A : IEquatable <A>
        {
            A last = default(A);

            A[] arr = new A[count];
            for (int i = 0; i < count; i++)
            {
                var res = i == 0
                    ? rnd.Next(tries)
                    : rnd.Where(a => !a.Equals(last)).Next(tries);
                if (!res.WasSuccessful)
                {
                    return(new RndResult <IEnumerable <A> >());
                }
                last   = res.Result;
                arr[i] = last;
            }
            return(new RndResult <IEnumerable <A> >(arr));
        }