Qu'en est-:
SelectedPost = q.ElementAt(r.Next(1, Answers.Count()));
Pour en savoir plus:
Les commentaires ci-dessous font de bonnes contributions à des questions étroitement liées, et je vais les inclure ici, puisque les points que @Rouby Les personnes cherchant une réponse à ces questions peuvent trouver cette réponse et cela ne sera pas correct dans ces cas.
Élément aléatoire À travers l'entrée entière
Pour tous les éléments d'un candidat dans la sélection aléatoire, vous devez changer l'entrée r.Next
:
SelectedPost = Answers.ElementAt(r.Next(0, Answers.Count()));
@Zidad ajoute une méthode d'extension utile obtenir un élément aléatoire sur tous les éléments de la séquence:
public static T Random<T>(this IEnumerable<T> enumerable)
{
if (enumerable == null)
{
throw new ArgumentNullException(nameof(enumerable));
}
// note: creating a Random instance each call may not be correct for you,
// consider a thread-safe static instance
var r = new Random();
var list = enumerable as IList<T> ?? enumerable.ToList();
return list.Count == 0 ? default(T) : list[r.Next(0, list.Count)];
}
Google m'a conduit à ce post, mais la réponse acceptée est trompeuse (en combinaison avec la question), car elle ne renvoie pas le premier et le dernier élément du tout (je suis conscient que cela pourrait être ce que vous cherchiez), mais étant donné que le titre de la question et la brève description concernent la recherche d'un élément aléatoire, je vous suggère de changer le libellé de la question (et/ou du titre) pour y réfléchir :) – Rouby
@Rouby Je pense que vous avez suffisamment de rep pour changer – Luke101