public static T RandomElement <T>(this IEnumerable <T> source, IRandomGen random)
        {
            var count = source.Count();

            var idx = random.GetNext(0, count - 1);

            return(source.Skip(idx).Take(1).FirstOrDefault());
        }
        private static IEnumerable <T> ShuffleIterator <T>(
            this IEnumerable <T> source, IRandomGen rng)
        {
            var buffer = source.ToList();

            for (int i = 0; i < buffer.Count; i++)
            {
                int j = rng.GetNext(i, buffer.Count - 1);
                yield return(buffer[j]);

                buffer[j] = buffer[i];
            }
        }
Exemplo n.º 3
0
        private void DistributeCard(IRandomGen randomGen)
        {
            if (!this.CardDistributed)
            {
                this.CardDistributed = true;

                if (this.CurrentPlayer.Cards.Count() < this.Options.MaximumNumberOfCards)
                {
                    var existingCards = new List <BonusCard>(this.CurrentPlayer.Cards);

                    var cardToDistribute = randomGen.GetNext(0, 2);
                    existingCards.Add((BonusCard)cardToDistribute);

                    this.CurrentPlayer.Cards = existingCards.ToArray();
                }
            }
        }
Exemplo n.º 4
0
        private void DistributeCard(IRandomGen randomGen)
        {
            if (!this.CardDistributed)
            {
                this.CardDistributed = true;

                if (this.CurrentPlayer.Cards.Count() < this.Options.MaximumNumberOfCards)
                {
                    var existingCards = new List<BonusCard>(this.CurrentPlayer.Cards);

                    var cardToDistribute = randomGen.GetNext(0, 2);
                    existingCards.Add((BonusCard) cardToDistribute);

                    this.CurrentPlayer.Cards = existingCards.ToArray();
                }
            }
        }