我从列表中随机挑选时遇到了问题。当我运行程序时,当我希望它每次都提出不同的随机字符串时,它会一遍又一遍地写入相同的字符串。下面是一个示例:
using System;
using System.Collections.Generic;
namespace List
{
class Program
{
static void Main(string[] args)
{
var letterList = new List<string>
{
"A","B","C","D"
};
Random r = new Random();
int letterListIndex = r.Next(letterList.Count);
for (int i = 0; i < 10; i++) {
Console.WriteLine(letterList[letterListIndex]);
}
}
}
}
例如:当我运行此代码时,它会写"B"10次。我希望它每次都能想出 10 个不同的字母。我知道你可以写:
int letterListIndex1 = r.Next(letterList.Count);
int letterListIndex2 = r.Next(letterList.Count);
int letterListIndex3 = r.Next(letterList.Count);
Console.WriteLine(letterList[letterListIndex1]);
Console.WriteLine(letterList[letterListIndex2]);
Console.WriteLine(letterList[letterListIndex3]);
但我想知道是否有更简单的方法可以做到这一点。
谢谢。
你应该把你的letterListIndex
变量放在循环for
for (int i = 0; i < 10; i++) {
int letterListIndex = r.Next(letterList.Count);
Console.WriteLine(letterList[letterListIndex]);
}
否则,您每次都会获得相同的索引。
你需要把
int letterListIndex = r.Next(letterList.Count);
在 for 循环内。
您可以使用以下代码
for (int i = 0; i < 10; i++) {
Console.WriteLine(letterList[r.Next(letterList.Count)]);
}