从字符串的Arraylist中获取'n'随机字符串。其中n =我想从列表中得到的字符串数量,它可以是1,2,3 ......?假设我想要选择随机四个字符串而不重复,我有N个字符串的数组列表。我该怎么做?代码应该在C#中。虽然我已经这样做了,但最好的方法是什么?
答案 0 :(得分:2)
Shuffling @ Coding Horror
答案 1 :(得分:1)
试试这个:
class Program
{
static void Main(string[] args)
{
int myRandomIndex = 0;
var myList = new List<string>(new[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" });
var results = new List<string>();
var r = new Random(DateTime.Now.Millisecond);
for (int ii = 0; ii < 4; ii++)
{
myRandomIndex = r.Next(myList.Count);
results.Add(myList[myRandomIndex]);
myList.RemoveAt(myRandomIndex);
}
Console.WriteLine(string.Join("", results));
Console.ReadKey();
}
}
要保持每个选定的字符串唯一(防止重复),我会在使用时将其从源列表中删除。在使用列表之前,您还应该执行myList = myList.Distinct()
,以确保您在开始时没有重复项。