Задача: Случайный выбор нескольких несовпадающих значений из множества
Исходник: Случайный выбор m разных значений массива, язык: C# [code #82, hits: 7657]
автор: this [добавлен: 01.03.2006]
  1. public static int[] RandomUniqueSelect(int[] arr, int m) {
  2. int[] res = new int[m];
  3. if (m > arr.Length) return res;
  4.  
  5. Random randObj = new Random();
  6. for (int i = 0; i < arr.Length; i++)
  7. {
  8. /* выбор m из оставшихся n-i */
  9. if ((randObj.Next() % (arr.Length - i)) < m)
  10. {
  11. res[--m] = arr[i];
  12. }
  13. }
  14. return res;
  15. }
На вход подается целочисленный массив arr.
На выходе получаем - массив из m случайно выбранных значений массива arr, при этом одно и тоже значение массива не выбирается повторно.
Тестировалось на: MS Visual Studio 2005, .NET Framework 2.0

+добавить реализацию