所以我有CardBase抽象類和 我想提取一些隨機卡元素排除一些特定的卡列表。 所以我喜歡這個。如何從列表中選擇隨機元素排除某些列表?
public List<CardBase> GetRandExclude(List<CardBase> list, int elementsCount, List<CardBase> excludeList)
{
var returnCards = from card in list
where !excludeList.Contains(card)
select card;
foreach (CardBase cd in returnCards.Take(elementsCount))
{
Debug.Log("Selected random card is "+cd.name);
}
return (List<CardBase>) returnCards.Take(elementsCount);
}
我做對了嗎? 有沒有更好的辦法? 在此先感謝。
所以我改變了一點這樣。這似乎很有用。
public List<CardBase> GetRandExclude(List<CardBase> list, int elementsCount, List<CardBase> excludeList)
{
var returnCards = from card in list
where !excludeList.Contains(card)
select card;
foreach (CardBase cd in returnCards.OrderBy(arg => Guid.NewGuid()).Take(elementsCount).ToList())
{
Debug.Log("Selected random card is "+cd.name);
}
return returnCards.OrderBy(arg => Guid.NewGuid()).Take(elementsCount).ToList();
}
我想像你得到一些例外和/或不想要的結果與目前的做法列表。所以請添加一些小例子列表來顯示你想要的結果的所有方面。 – grek40
我想如果你想使它隨機,你可能要考慮使用['System.Random類'](https://msdn.microsoft.com/en-us/library/system.random(v = vs .110).aspx#Anchor_4)生成一個隨機數,告訴你應該從剩餘列表項中取出多少個數字,並使用相同的類來生成每個從列表中選擇的數字的索引。 – Yatin