随机范围是什么意思?
Whats does the random range mean?
我正在使用 unity 的 random.value 函数(我想我在其他地方也看到了这种行为),正如文档所述,它的工作方式如下。
Both 0.0 and 1.0 may be returned by this property. This behaviour is different to that of many other random number generators which return a value less than but never exactly equal to 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 的数字?这样做有什么隐藏的好处吗?
不,你不应该使用它。如果是 return 1.0,您就会遇到问题。坦率地说,我认为这是 Unity 的 API 设计错误。
但是,无论如何我都不会建议您编写代码。相反,使用 Random.Range
method:
int number = array[Random.Range(0, array.Length)];
在那里,接受 int
值的重载将最大值视为 exclusive 而不是 inclusive。
我正在使用 unity 的 random.value 函数(我想我在其他地方也看到了这种行为),正如文档所述,它的工作方式如下。
Both 0.0 and 1.0 may be returned by this property. This behaviour is different to that of many other random number generators which return a value less than but never exactly equal to 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 的数字?这样做有什么隐藏的好处吗?
不,你不应该使用它。如果是 return 1.0,您就会遇到问题。坦率地说,我认为这是 Unity 的 API 设计错误。
但是,无论如何我都不会建议您编写代码。相反,使用 Random.Range
method:
int number = array[Random.Range(0, array.Length)];
在那里,接受 int
值的重载将最大值视为 exclusive 而不是 inclusive。