/// <summary>
        /// Gets the top players who have played at least 100 games.
        /// </summary>
        /// <param name="experiment">The experiment.</param>
        /// <param name="count">The count.</param>
        /// <returns>
        /// The top N players from last experiment.
        /// </returns>
        public static IList <string> GetTopPlayersWhoHavePlayedAtLeast100Games(
            OnlineExperiment experiment,
            int count)
        {
            var playersOver100 = experiment.PlayerPosteriors.Where(ia => ia.Value.Count >= 100).ToArray();

            return(!playersOver100.Any() ? null : playersOver100.OrderByDescending(ia => ia.Value.Last().GetMean()).Take(count).Select(ia => ia.Key).ToArray());
        }
 /// <summary>
 /// Gets the random n players.
 /// </summary>
 /// <param name="experiment">The experiment.</param>
 /// <param name="count">The count.</param>
 /// <returns>
 /// The top N players from last experiment.
 /// </returns>
 public static IList <string> GetRandomNPlayers(OnlineExperiment experiment, int count)
 {
     // Get top N players - leaderboard is already sorted
     return(experiment.Players.OrderBy(ia => Guid.NewGuid()).Take(count).ToArray());
 }
 /// <summary>
 /// Gets the top n players by skill.
 /// </summary>
 /// <param name="experiment">The experiment.</param>
 /// <param name="count">The count.</param>
 /// <returns>
 /// The top N players from last experiment.
 /// </returns>
 public static IList <string> GetTopNPlayersBySkill(OnlineExperiment experiment, int count)
 {
     // Get top N players - leaderboard is already sorted
     return(count == int.MaxValue ? experiment.LeaderBoard.Keys.ToArray() : experiment.LeaderBoard.Keys.Take(count).ToArray());
 }
 /// <summary>
 /// Gets the top n players by count.
 /// </summary>
 /// <param name="experiment">The experiment.</param>
 /// <param name="count">The count.</param>
 /// <returns>The top N players from last experiment.</returns>
 public static IList <string> GetTopNPlayersByCount(OnlineExperiment experiment, int count)
 {
     return(experiment.PlayerPosteriors.OrderByDescending(ia => ia.Value.Count).Take(count).Select(ia => ia.Key).ToArray());
 }
 /// <summary>
 /// Gets the first n players.
 /// </summary>
 /// <param name="experiment">The experiment.</param>
 /// <param name="count">The count.</param>
 /// <returns>The first N players from last experiment.</returns>
 public static IList <string> GetFirstNPlayers(OnlineExperiment experiment, int count)
 {
     return(experiment.Players.Take(count).ToArray());
 }