如何从数组中随机选择一行?

时间:2018-10-20 04:50:43

标签: c# arrays

当我的应用程序启动时,我这样做:

Random rand = new Random();

然后我有这段代码可以创建短语列表。我想做的就是选择该列表中仅一行的PhraseId。我正在尝试兰特,但对如何执行此操作感到非常困惑。这是我到目前为止的内容:

var phrases = App.selectedPhrases.All.Where(x => x.Points > 1).ToList();
if (phrases.Count == 0) return;
var indx = (int)rand.Next(phrases.Count) + 1;
var id = phrases[indx].PhraseId;

有人可以帮我确认一下,这是正确的方法吗,不管列表中有多少行,它是否都能工作?如果只有一个元素,它会选择那个还是我应该针对这种情况使用不同的代码?

1 个答案:

答案 0 :(得分:4)

只是改变

var indx = (int)rand.Next(phrases.Count) + 1;

收件人:

var indx = rand.Next(phrases.Count);
  

0 <= rand.Next(phrases.Count)<个短语.Count

因为索引星从0开始,但是+ 1中的rand.Next(phrases.Count) + 1会排除0索引,并且会包含indx == phrases.Count,这超出了范围。