如何从集合中随机获取字符串,但更喜欢集合开头的字符串

Joe*_*oeS 2 c# random

如果我有一个包含以下字符串的列表:

  "a","b","c","d","e","f","g","h","i","j","k","l","m","n"
Run Code Online (Sandbox Code Playgroud)

获取随机字符串的最佳方法是什么,但加权的方式更可能是"a"而不是"n"?

Leo*_*ick 8

选择两个随机数并选择较低的一个.

Random rnd = new Random();
var randomItem = list[Math.Min(rnd.Next(list.Count+1), rnd.Next(list.Count+1))];
Run Code Online (Sandbox Code Playgroud)

我建议你自己确定每个项目的相对概率.

如果你想出一个更严格的'最佳'定义,那么这个答案可能不适合它.