Unity 6.3
0 онлайн 62 гостей 3 в системе
Вход

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] (диапазон включает) (Только чтение).

Статические методы

Метод Описание
ColorHSVГенерирует случайный цвет из диапазонов HSV и альфа.
InitStateИнициализирует состояние генератора случайных чисел заданным зерном.
RangeВозвращает случайное число с плавающей запятой в пределах [minInclusive..maxInclusive] (диапазон включает).