Dan*_*Dan 3 c# xamarin xamarin.forms
我有一个颜色列表,我希望将它们混洗至少混合一点。
我使用创建列表
List<Color> colors = new List<Color> ();
colors.Add(Color.Black);
colors.Add(Color.White);
colors.Add(Color.Red);
Run Code Online (Sandbox Code Playgroud)
但是.Shuffle我没有注意到,.Sort但是我认为这不是我所需要的。我搜索了一会儿,但是对于这样一个简单的任务,如果有更简单的方法,我发现所有的方法和其他问题似乎都过于复杂。
我尝试使用
List<Color> colorList = new List<Color>();
public void SetupColors()
{
List<Color> colors = new List<Color> ();
colors.Add(Color.BLACK);
colors.Add(Color.WHITE);
colors.Add(Color.RED);
Random random = new Random();
int n = colors.Count;
for (int i = colors.Count; i > 1; i--)
{
int rnd = random.Next(i + 1);
var value = colors[rnd];
colors[rnd] = colors[i];
colors[i] = value;
}
colorList = colors;
}
public List<Message> getMessages()
{
List<Message> items = new List<Message>
{
new Message
{
. . .
Background = colorList[0]
},
new Message
{
. . .
Background = colorList[1]
}
};
return items;
}
Run Code Online (Sandbox Code Playgroud)
但我不断收到IndexBound错误的colorList[0]和colorList[1]
试试这个(基于Fisher-Yates随机算法)
public static void ShuffleMe<T>(this IList<T> list)
{
Random random = new Random();
int n = list.Count;
for(int i= list.Count - 1; i > 1; i--)
{
int rnd = random.Next(i + 1);
T value = list[rnd];
list[rnd] = list[i];
list[i] = value;
}
}
List<Color> colors = new List<Color> ();
colors.Add(Color.Black);
colors.Add(Color.White);
colors.Add(Color.Red);
colors.ShuffleMe();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4200 次 |
| 最近记录: |