C# кодируют, только дает ожидаемые результаты на шаге через?

От Ваших комментариев до других плакатов похоже, что Вас оставляют с malloc () и друзья. Вектор не позволит Вам не создать элементы.

5
задан Matt 29 September 2009 в 13:33
поделиться

5 ответов

Первая ошибка: никогда не использовать несколько экземпляров Random, используйте один экземпляр и передайте его вместе с другими параметрами.

12
ответ дан 18 December 2019 в 09:08
поделиться

Вы создаете случайный класс каждый раз, когда вам нужно создать число. Это даст вам сумасшедшие результаты.

См. Здесь: ИЗ MSDN

Этой проблемы можно избежать, создав один случайный объект, а не несколько.

Для повышения производительности создайте один случайный объект. для генерации множества случайных чисел с течением времени вместо многократного создания новых объектов Random для генерации одного случайного числа.

Например, создать частный экземпляр Random ...

1
ответ дан 18 December 2019 в 09:08
поделиться

Когда вы создаете «Random rnd = new Random ();» он засевается по текущему времени. Когда вы отлаживаете свой код (что требует времени), он будет каждый раз заполняться по-разному.

Создайте 1 экземпляр Random и ссылайтесь на него везде.

5
ответ дан 18 December 2019 в 09:08
поделиться

В дополнение к тому, что было упомянуто ранее ...

Используйте случайный выбор для таких вещей, как игра в кости, карточные игры, выбор случайных изображений и так далее. Если вам когда-нибудь понадобится создать случайное число в целях безопасности, используйте System.Security.Cryptography.RandomNumberGenerator. В этом простом примере показано создание случайного целого числа.

        RandomNumberGenerator gen = RandomNumberGenerator.Create();
        byte[] myBytes = new byte[4];
        gen.GetBytes(myBytes);
        int myValue = (BitConverter.ToInt32(myBytes, 0));

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

EDIT: Мне пришло в голову, что я никогда не тестировал это. Быстрый тест производительности показал следующее:

1 000 000 случайных чисел: RandomNumberGenerator: 2,6 секунды Случайный: 0,015 секунды.

Таким образом, Random примерно в 150 раз быстрее.

1
ответ дан 18 December 2019 в 09:08
поделиться

Задайте конструктору Random начальное число. В этом проблема.

http://msdn.microsoft.com/en-us/library/aa329890%28VS.71%29.aspx

Random r = new Random(DateTime.Now.Millisecond);
-1
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: