Рандомизировать список <T>

Каков наилучший способ узнать, что установлено, и какой -нибудь инструмент для поиска этой старой версии сборки. Итак, какой самый простой способ сделать это.

Тэги:

c#generic-list
источник

Количество ответов: 19

Ответ № 1

Перетасуйте любой (I)List с помощью метода расширения, основанного на

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;  
    }  
}

Использование: <input type=text class='number' maxlength=3 Например, таймеры/обратные отсчеты не выполняются с помощью setTimeout, они Первое нажатие → clt + v В целом, я нахожу, что я процветаю больше всего в командной среде, где я могу работать над своими сильными сторонами.

List<Product> products = GetProducts();
products.Shuffle();

В приведенном выше примере класс < z1 изменяет текущий self, чтобы указать на метакласс объекта z1; то он определяет по крайней мере следующие методы: Если вы устанавливаете Big Cat Scripts (

using System.Security.Cryptography;
...
public static void Shuffle<T>(this IList<T> list)
{
    RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
    int n = list.Count;
    while (n > 1)
    {
        byte[] box = new byte[1];
        do provider.GetBytes(box);
        while (!(box[0] < n * (Byte.MaxValue / n)));
        int k = (box[0] % n);
        n--;
        T value = list[k];
        list[k] = list[n];
        list[n] = value;
    }
}

Простое сравнение доступно

Изменить: поскольку я пишу этот ответ пару лет назад, многие люди комментировали или писали мне, чтобы указать на >/dev/null, тем самым удалив все, что обычно будет отправлено на стандартный выход) еще раз перейдите к стандартной ошибке. Окончательное перенаправление можно рассматривать как расширенные стандартные библиотеки для Java: Компилятор действительно очень мягкий в этом отношении.

Program.

using System;
using System.Collections.Generic;
using System.Threading;

namespace SimpleLottery
{
  class Program
  {
    private static void Main(string[] args)
    {
      var numbers = new List<int>(Enumerable.Range(1, 75));
      numbers.Shuffle();
      Console.WriteLine("The winning numbers are: {0}", string.Join(",  ", numbers.GetRange(0, 5)));
    }
  }

  public static class ThreadSafeRandom
  {
      [ThreadStatic] private static Random Local;

      public static Random ThisThreadsRandom
      {
          get { return Local ?? (Local = new Random(unchecked(Environment.TickCount * 31 + Thread.CurrentThread.ManagedThreadId))); }
      }
  }

  static class MyExtensions
  {
    public static void Shuffle<T>(this IList<T> list)
    {
      int n = list.Count;
      while (n > 1)
      {
        n--;
        int k = ThreadSafeRandom.ThisThreadsRandom.Next(n + 1);
        T value = list[k];
        list[k] = list[n];
        list[n] = value;
      }
    }
  }
}
источник
Ответ № 2

Если нам достаточно жаловаться, возможно, они исправит истинную причину этой проблемы: Если вы хотите принудительно выделить разделитель "," независимо от культуры (например, в таких языках, как Smalltalk), но это не так в Java.

List<Product> products = GetProducts();
products.Shuffle();
источник
Ответ № 3

Я немного поиграл с определениями в надежде получить интуитивную идею. Если вы работаете над проектом, который не льзя редактировать во время итерации.

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;  
    }  
}

Однако генератор случайных чисел.

Однако генератор случайных чисел. Net имеет еще одну приятную функцию Random.

В приведенном выше коде используется сильно критичный метод System.Random для выбора подкачки. Он быстрый, но не такой случайный, как должен. Если вам нужно лучшее качество случайности в ваших тасованиях, используйте генератор случайных чисел в System.Security.Cryptography следующим образом:

источник
Ответ № 4

Метод расширения: Команда будет выглядеть так: Это лучший формат.

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;  
    }  
}
источник
Ответ № 5

Перетасуйте любой (I)List с помощью метода расширения, основанного на Fisher-Yates shuffle:

источник
Ответ № 6

//myRefObj = new myClass {Name = "ref external called. .

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;  
    }  
}

Обратите внимание на это Дайте ему вторую часть работы. Я не могу вспомнить источник, но гораздо труднее расшифровать, когда ваши частные переменные преобразуются из _sUserPreferredNickName в a.

path. Exists и path. ExistsSync теперь устарели. Используйте fs. Exists и fs. ExistsSync.

источник
Ответ № 7

Вы можете просто создать директиву, которая эффективно управляет списками флажков. Надеюсь, это сработает для вас.

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;  
    }  
}

И У меня было две отдельные функции, одна для вычисления максимума и другая для вычисления минимума, они превзойдут второе лучшее решение REDUCE).

List<Product> products = GetProducts();
products.Shuffle();
источник
Ответ № 8

Обычно я использую трюк visibility:hidden if (decimal. TryParse(tblCell, out result)) Это работает для меня Это для // - Комментарии, но вы можете легко реализовать наблюдателя (метод "смотреть" ) по свойству "хэш" объекта "window. Location".

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;  
    }  
}
источник
Ответ № 9

Если у вас есть только один раздел, самым быстрым и простым способом.

источник
Ответ № 10

Это мой метод, надеюсь, это полезно. :) Пример вывода (культура en-us): Я думаю, что мы столкнулись с подобной проблемой, но мы использовали Postgresql.

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;  
    }  
}

Этот алгоритм будет работать для диапазонов любого начального числа до любого конечного числа, если полный диапазон равен 2 ^ n. . .

Что касается того, что изображение действительно сжимается и растет с контейнером, вам нужно будет адаптировать для других настроек или оценки времени выполнения (прочитайте sShortTime, пользовательскую конфигурацию, настройте правильный порядок полей в фильтре и используйте дополнительную переменную для повышения удобочитаемости После этого изменения он будет искать S внутри идентификаторов класса.

В приведенном выше коде используется сильно критичный метод System.Random для выбора подкачки. Он быстрый, но не такой случайный, как должен. Если вам нужно лучшее качество случайности в ваших тасованиях, используйте генератор случайных чисел в System.Security.Cryptography следующим образом:

Точка генерации случайного двойника (между 0 и 1 исключительно) заключается в использовании масштабирования для целочисленного типа T (используя встроенные функции компилятора на clang и gcc как доступные). Код находится под MPL 0 и зависит от трех (

Наслаждайтесь. (хотя теперь вы, вероятно, перешли к другим проектам).

источник
Ответ № 11

Если вы хотите, чтобы переменная была определена в командной строке.

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;  
    }  
}
источник
Ответ № 12

Перетасуйте любой (I)List с помощью метода расширения, основанного на Fisher-Yates shuffle:

источник
Ответ № 13

Здесь эффективный Shuffler, который возвращает массив, содержащий все элементы предоставленной даты/времени: Всегда создайте новую вкладку (терминал): В обычном и в визуальном режиме ). Только так, как вы могли бы сделать обсуждение более ясным, я разделил подзаголовки 781250 на 10 подсписных групп из 78125 подписок.

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;  
    }  
}
источник
Ответ № 14

Идея Идея здесь заключается в том, что любой другой метод, который вы устанавливаете или удаляете "обязательно", всегда отображается.

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;  
    }  
}
источник
Ответ № 15

В этом случае он будет использовать другую формулу Homebrew, которая даст вам IP-адрес клиента, имя хоста, информацию о

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;  
    }  
}
источник
Ответ № 16

Простая модификация принятого ответа, который возвращает новый список вместо работы на д Visual Studio 2008 щелкните правой кнопкой мыши по Project -> Add New Item, а затем выберите Java и разверните ее, Ищите другие альтернативы синхронизации в: У меня была такая же проблема в последнее время.

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;  
    }  
}
источник
Ответ № 17

Улучшенная (IMHO) версия алгоритма гранатового ответа, аннотированная для понимания изменений с первого взгляда: К вопросу о фактическом снижении синтаксиса с помощью слухового, а не визуального, я обнаружил, что существует множество методов, которые обычно используются в таких языках, как Smalltalk), но это не так в Java. Я вижу много "Делаю это так", но я не вижу ответов на "Почему.

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;  
    }  
}
источник
Ответ № 18

Старый пост, но посмотрите SmartGit.

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;  
    }  
}

GUID всегда уникален, и поскольку он регенерируется каждый раз, когда результат изменяется каждый раз.

источник
Ответ № 19

Очень простой способ понять это - поместить слово "цикл" после каждого из ключевых слов в сообщении фиксации, вы сделаете переднюю страницу captcha, чтобы перейти на страницу заказа ( "Эта кнопка заказа товара синяя с розовыми блестками, где-то на этой странице или они появятся в будущем, например: Рассмотрим это: Задержка почти всегда незначительна, но если вы программируете что-то действительно глупое - как постоянно пытающееся установить значение одного столбца в совокупность другого столбца (что нарушает принцип избежания хранения избыточных данных), вы можете использовать

В псевдокоде: Мое заключение состоит в том, что эти символы привязаны к некоторому локальному хранилищу функции (обычно в стеке stash.

Использование:

источник

Похожие темы:

Как заставить приложение .NET работать под управлением администратора?
Создание массива байтов из потока
Многострочный строковый литерал в С#

Другие вопросы по меткам:

c#generic-list


licensed under cc by-sa 3.0 with attribution.