【问题标题】:I'm wondering why my Random.Range(1, 2) isn't working [duplicate]我想知道为什么我的 Random.Range(1, 2) 不起作用[重复]
【发布时间】: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 版本... 如果一个人不精通语言并且在阅读文档时不是非常仔细,那会很混乱。 ..

标签: c# unity3d


【解决方案1】:

在使用 Random.Range 时,您应该记住需要插入的最大值应始终大于 1 例如: 如果您想获得“1”,有时您需要将最大值设置为“2”而不是“1” 所以它应该是这样的: x = Random.Range (0, 2);

所以总是在最大值上加 1 个数字你需要!

【讨论】:

  • 不确定你所说的是什么意思“你需要插入的最大值应该总是大于1”Range 方法绝对适用于负数。
  • 随机范围的最大值!因为它的语法是这样的:Random.Range(Minimum value, Maximum value)
  • 正确,但不必大于1。还有,你为什么说“有时你需要……”。这意味着有些时候没有必要..?
  • @RufusL 我认为 wAWEhd_ment 必须比最大预期输出大 1 ;) 只是措辞有点混乱
  • 是的,这就是我的意思,如果我错过了发音,抱歉:)
猜你喜欢
  • 2021-11-16
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
  • 2016-08-25
  • 2020-09-16
  • 1970-01-01
  • 2020-09-19
相关资源
最近更新 更多