Что означает случайный диапазон? - PullRequest
0 голосов
/ 07 декабря 2018

Я использую функцию random.value (я думаю, что я видел это поведение и где-то еще), которая, как указано в документации, работает следующим образом.

И 0,0, и 1,0 могут быть возвращены этим свойством.Это поведение отличается от поведения многих других генераторов случайных чисел, которые возвращают значение меньше, но никогда точно не равное 1,0.

Теперь при использовании этого метода примерно так

int[] array = {1, 2, 3, 4, 5};
int number = array[(int)(Random.value * array.length)];

Должен ли я беспокоиться о получении исключения ArrayOutOfRangeException, когда все планеты выстроены в линию?И значит ли это, что меня заставляют делать это ради того, чтобы я мог спать по ночам?

int number = array[(int)((Random.value - Float.epsilon) * array.length)];

Далее я хотел бы знать, почему кто-то может создать случайную функцию, которая невозвращать числа только меньше одного?Есть ли какая-то скрытая выгода от этого?

1 Ответ

0 голосов
/ 07 декабря 2018

Нет, вы не должны использовать это.Если он вернет 1.0, у вас будут проблемы.Честно говоря, я думаю, что это была ошибка разработки API со стороны Unity.

Однако я не рекомендую вам писать код в любом случае.Вместо этого используйте метод Random.Range :

int number = array[Random.Range(0, array.Length)];

. Там значения перегрузки, принимающие значения int, обрабатывают максимум как исключительный , а не включающий.


...