كيفية خلط قائمة List<T> عشوائيًا في C#؟
مرحبًا بالجميع! أنا مبتدئ في C# وأكتب تطبيقًا صغيرًا للعبة ورق. لدي قائمة (List) تحتوي على مجموعة أوراق. أحتاج إلى خلط هذه الأوراق عشوائيًا قبل التوزيع، لكنني لا أجد طريقة مدمجة مثل List.Shuffle().
إليك الكود الخاص بي:
```csharp
List deck = new List();
// ... ملء المجموعة بالأوراق ...
// كيف يمكنني الخلط الآن؟ جربت:
deck.OrderBy(x => random.Next()).ToList(); // لكن هذا يعيد قائمة جديدة ولا يغير الأصلية
```
المشكلة هي أنني أريد تغيير القائمة الأصلية deck، وليس إنشاء قائمة جديدة. بالإضافة إلى ذلك، قرأت أن استخدام Random مع OrderBy قد يعطي توزيعًا غير متساوٍ أو حتى استثناءات إذا أعاد random.Next() قيمًا متطابقة لعدة عناصر.
أرجو إرشادي إلى الطريقة الصحيحة والفعالة لخلط List في مكانها؟ مع مثال كود إن أمكن. شكرًا مقدمًا!
<<>>
أفضل طريقة: خوارزمية فيشر-يتس (Knuth shuffle)
الطريقة