我在从列表中随机选择时遇到问题。当我运行程序时,它会一遍又一遍地写入相同的字符串,当我希望它每次都想出不同的随机字符串时。下面是一个例子:
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]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
例如:当我运行这段代码时,它会写 10 次“B”。我希望它每次都想出 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]);
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更简单的方法来做到这一点。
谢谢。
你应该把你的letterListIndex变量放在for循环中
for (int i = 0; i < 10; i++) {
int letterListIndex = r.Next(letterList.Count);
Console.WriteLine(letterList[letterListIndex]);
}
Run Code Online (Sandbox Code Playgroud)
否则你每次都会得到相同的索引。