Как мне перетасовать список? - PullRequest
0 голосов
/ 16 января 2020

Как мне перемешать List в говядине? Я хотел бы добавить расширение к Random, которое перетасовывает List на место:

using System.Collections.Generic;

namespace System
{
    extension Random 
    {
        public virtual void Shuffle<T>(List<T> list)
        {
            // Use this to shuffle the list in-place
        }
    }
}

1 Ответ

0 голосов
/ 16 января 2020

Используйте алгоритм тасования Фишера-Йейтса:

using System.Collections.Generic;

namespace System
{
    extension Random 
    {
        public virtual void Shuffle<T>(List<T> list)
        {
            for (let i = list.Count - 1; i > 0; i--) 
            {
                let j = Next(0, i + 1);
                let tmp = list[j];
                list[j] = list[i];
                list[i] = tmp;
            }
        }
    }
}
...