Посетила мысль, что я не совсем понимаю, из каких соображений класс Random в дотнете не сделан статическим. Создавать экземпляры генераторов случайных чисел с разными начальными значениями, что-ли?
ну вообще-то логично, ибо есть разные алгоритмы генерации, и теоретически должно быть возможно подсунуть реализацию, читающую из /dev/random и не знающую ничего о начальных значениях.
А зачем static? В каждый последующий вызов Next() передавать предыдущее рандомное значение? А вдруг я где-нибудь ошибусь, и буду передавать одно и то же значение?
Плюсую. Очень удобно тестить, если валиться где-то внутре в зависимости от цен на дрова в бухте Дикси. Или, к примеру, некая структура генериться рандомом и ошибка вылезает только на некоторых вариантах. Всобачил одинаковый сид и повторяй себе до усрачки.
То, что одинаковый сид даёт одинаковые последовательности, полезно для какой-нибудь мрачной отладки. Тем более, если эта последовательность из объектов разных типов. Ихний рандом такое позволяет, хотя хз, встречается ли такое на практике.
Ну а чего, вспомнилось из жизни. Надо было каждому сеансу пользователя приписать свой идентификатор. О безопасности речи в данном контексте не идёт. Во времена MS SQL 2000 использовалась newid(), но это десятикратное падение производительности. Переписано на random, причём на собственный - т.е. с наличием таблички состояния. Достоинство: а понятно вроде. Была такая весёлая задачка: на Трубо Паскакале зажечь рандомные точки на экране и погасить назад, не используя память. Через randseed, да. А глобальный генератор не дал бы удалить триггер, он следит за флажком глобальности. И вообще в базе можно сделать много больше, чем люди привыкли делать :)
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Или, к примеру, некая структура генериться рандомом и ошибка вылезает только на некоторых вариантах.
Всобачил одинаковый сид и повторяй себе до усрачки.
no subject
Тем более, если эта последовательность из объектов разных типов. Ихний рандом такое позволяет, хотя хз, встречается ли такое на практике.
no subject
Плюс, вероятно, со статиком им бы как-то пришлось разруливать многопоточность, а так это проблема программиста.
no subject
no subject
no subject
no subject
Была такая весёлая задачка: на Трубо Паскакале зажечь рандомные точки на экране и погасить назад, не используя память. Через randseed, да. А глобальный генератор не дал бы удалить триггер, он следит за флажком глобальности.
И вообще в базе можно сделать много больше, чем люди привыкли делать :)