Random
класс в UnityEngine
Выполнено в:UnityEngine.CoreModule
Описание
Легко генерировать случайные данные для игр.
Этот статический класс предлагает несколько простых, ориентированных на игры способов формирования псевдослучайные числа.
Генератор является Хоршифт 128 алгоритм, основанный на документе Хоршифт RNGs Джорджа Марсаглиа. Он статически инициализируется с высокойЭнтропия семена генератор генерируется из операционной системы, и хранится в памяти, где он будет переживать перезагрузки домена. Это означает, что генератор сеет ровно один раз при запуске процесса, и после этого остается полностью под управлением скрипта.
Более подробную информацию о семенах, в том числе о том, как управлять ими самостоятельно, см. InitState. О том, как сохранять и восстанавливать состояние Random, см. state.
Против System.Random
У этого класса такое же имя, как у класса .NET Framework System.Random и служит аналогичной цели, но отличается в некоторых ключевых аспектах:
Статическое против инстанционированного
UnityEngine.Random — статический класс, поэтому его состояние является глобально общим. Получать случайные числа просто, так как не нужно new экземпляр и управляет его хранением. Однако статическое состояние создаёт проблемы при работе с потоками и заданиями (генератор выдаст ошибку при использовании вне главного потока), а также когда нужно несколько независимых генераторов случайных чисел. В таких случаях управление экземплярами System.Random был бы лучшим вариантом.
Верхние пределы подвижного значения включают
Все свойства и методы в UnityEngine.Random которые работают с или получают работу от случайности на основе плавающей (например, value или ColorHSV) будет использоваться включая верхний предел. Это означает, что возможно, хотя и столь же редко, как и любое другое данное значение, чтобы max было возвращено случайным образом. System.Random.NextDouble() имеет исключительно maximum, и никогда не возвращает максимальное значение, а только число чуть ниже него.
Результаты работы
Методы в UnityEngine.Random по данным измерений, на 20-40% быстрее, чем их эквиваленты в System.Random.
Неоднозначность разрешения имен
Потому что классы имеют одно и то же название Random, это может быть легко получить CS0104 "неоднозначная ссылка" ошибка компилятора, если System и UnityEngine пространства имен вводятся через using. Для разъяснения, либо используйте псевдоним using Random = UnityEngine.Random;, полностью квалифицируйте имя типа e.g. UnityEngine.Random.InitState(123);, или устранить using System и полностью квалифицированные или псевдонимные типы из этого пространства имен.
Статические свойства
| Свойство | Описание |
|---|---|
| insideUnitCircle | Возвращает случайную точку внутри или на окружности с радиусом 1.0 (только для чтения). |
| insideUnitSphere | Возвращает случайную точку внутри или на сфере с радиусом 1.0 (только для чтения). |
| onUnitCircle | Возвращает случайную точку на окружности окружности с радиусом 1.0 (только для чтения). |
| onUnitSphere | Возвращает случайную точку на поверхности сферы с радиусом 1.0 (только для чтения). |
| rotation | Возвращает случайное вращение (только для чтения). |
| rotationUniform | Возвращает случайное вращение с равномерным распределением (только для чтения). |
| state | Возвращает или задаёт полное внутреннее состояние генератора случайных чисел. |
| value | Возвращает случайное число с плавающей запятой в пределах [0.0..1.0] (диапазон включает) (Только чтение). |