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

标签 c# arrays

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

Random rand = new Random();

然后我有了创建短语列表的代码。我想要做的是只选择该列表中其中一行的 PhraseId。我正在尝试使用 rand 但对如何执行此操作感到非常困惑。这是我目前所拥有的:

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;

有人可以为我确认一下,这是正确的做法吗?无论列表中有多少行,它都可以工作吗?如果只有一个元素,它会选择那个元素还是我应该为这种情况编写不同的代码?

最佳答案

改变

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

到:

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

0 <= rand.Next(phrases.Count) < phrases.Count

as index stars from 0 but + 1 in rand.Next(phrases.Count) + 1 将排除 0 索引并包括 indx == phrases .Count 超出范围。

关于c# - 如何从数组中随机选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52902540/

相关文章:

c - 错误 : lvalue required as left operand of assignment in a swap with pointers

javascript - 循环数组数组并将值递增到新数组中

C:初始化字符指针(字符串)数组并使用 fgets 遍历文件以将值放入这些字符串

javascript数组和对象

c# - 在控制台应用程序中加载 cmd

c# - 用于选择具有特定值的特定节点的 XPath 字符串 c#

c# - 如何使用 MVC 5 和 Web API 构建 Android 应用程序?

c# - 仅在 Win8 下 Storyboard中的内存泄漏?

c# - 为什么在反序列化期间使用 UTF-8 进行编码比使用 ASCII 更好?

javascript - 按相似属性分组并通过逗号连接它们 javascript - Mysql group concat like