我有一个代码可以从ist生成一个新的随机项而不会重复。
class text_generator
{
public int getWordIndex(List<string> source, Random value)
{
return value.Next(0, source.Count - 1);
}
public bool checkListLength(List<string> source)
{
return source.Count == 0;
}
public string getText(List<string> source, List<string> backup_source, Random value)
{
if (checkListLength(source))
{
source.AddRange(backup_source);
}
;
int index = getWordIndex(source, value);
string result = source[index];
source.RemoveAt(index);
return result;
}
}
然后我打开一个主列表和一个空列表。
text_generator textix = new text_generator();
List<string> hi = new List<string> { "Hi", "Howdy", "Hey" //etc };
List<string> work_hi = new List<string>();
而且...生成。在使用所有元素之前,它们总是不同的。
Random rand = new Random();
Console.WriteLine(textix.getText(work_hi, hi, rand));
我的问题是:虽然这段代码工作正常但似乎有点长。只用一种方法就可以做同样的事吗?有可能不再打开一个列表吗?我该怎么办?
答案 0 :(得分:0)
您是否考虑过按随机顺序对列表进行排序?
Random rand = new Random();
List<string> hi = new List<string> { "Hi", "Howdy", "Hey" };
List<string> work_hi = hi.OrderBy(x => rand.Next()).ToList();