如何从列表中随机选择项目并禁用它,以便在其余项目之前不会选择所选项目

时间:2015-12-12 19:59:00

标签: c# arrays list

我的列表中有4种颜色,我想在不同的位置随机显示每种颜色。但是当我尝试这样做的时候,不同的颜色出现在我不想要的同一时间。我想要显示所有卡片,并且每个卡片都在不同的位置。

以下是代码。

hasChild

2 个答案:

答案 0 :(得分:0)

您需要的是随机播放列表,然后按顺序使用随机数据。你需要对列表进行排列,然后进行改组。

在网络上或Stack Overflow上查找改组代码。

答案 1 :(得分:0)

尝试将第二个列表作为临时值并从列表中弹出每个使用过的元素。

var colorList = List<Color>(); // color list
var tempList = colorList; // temp list so you don't lose your colors

//make random number between 0 & n

var n = 10;
while( n > 0) {
    var randomNumber = Random.Range(0, n);
    tempList.popAt(randomNumber);
    n--;
}

或者在其他评论中提到,shuffle方法是

private static Random rng = new Random();  

public static void Shuffle<T>(this IList<T> list)  
{  
    int n = list.Count;  
    while (n > 1) {  
        n--;  
        int k = rng.Next(n + 1);  
        T value = list[k];  
        list[k] = list[n];  
        list[n] = value;  
    }  
}

取自here

相关问题