Лучшая случайная функция для C # - PullRequest
3 голосов
/ 21 января 2011

Я генерирую много случайных чисел, и мне нужна хорошая функция, так как это мало помогает:

public static class Randomizer
{
    static Random random = new Random((int)DateTime.Now.Ticks);

    public static int RandomInteger(int minimum, int maximum)
    {
        return random.Next(minimum, maximum + 1);
    }

    public static double RandomDouble()
    {
        return random.NextDouble();
    }
}

Когда я использую этот класс, мои цифры очень часто совпадают. У вас есть простая идея, как я могу улучшить производительность рандомизатора?

Спасибо, Иван

Ответы [ 3 ]

11 голосов
/ 21 января 2011
0 голосов
/ 21 января 2011

Взгляните на MiscUtil от Джона Скита.

Существует статический случайный класс, который работает без проблем.

Кстати, а вам нужны случайные или уникальные числа?

0 голосов
/ 21 января 2011

Причина, по которой ваши номера одинаковы, заключается в том, что вы создаете новый Случайный каждый вызов в классе, что означает, что он будет начинаться с использованием того же номера из DateTime.Now.Ticks

Вы должны сделать это нестатическим классом. Создайте его один раз, а затем повторно вызовите ту же функцию из объекта

...