【发布时间】:2021-03-15 23:06:26
【问题描述】:
在这里,我想知道为什么我只得到“0”而不是“1”。 (我使用的是 Unity,C#)
public int x;
void Start()
{
x = Random.Range(0, 1);
}
public void Test()
{
if(x == 0)
{
Debug.Log("0");
}
else if(x == 1)
{
Debug.Log("1");
}
}
【问题讨论】:
-
您的标题提到了
Range(1,2),但没有出现。无论如何,UnityEngine.Random.Range(0,1)只会返回0。 From the documentation: "public static int Range(int minInclusive, int maxExclusive);描述返回 [minInclusive..maxExclusive) 内的随机整数(只读)。此方法将按以下方式运行:maxExcusive是独占的,因此对于example`Random.Range(0, 10)` 将返回一个介于 0 和 9 之间的值,每个值的概率大致相等。" -
也许你应该描述一下为什么你期望得到
1,当最大值被定义为独占时? -
@RufusL 大概是因为 FM docs.unity3d.com/ScriptReference/Random.Range.html 说 maxInclusive... 但仅适用于
(float, float)-> float版本... 如果一个人不精通语言并且在阅读文档时不是非常仔细,那会很混乱。 ..