【问题标题】:Generate random number between 1 and 3 / including 1 decimal place生成 1 到 3 之间的随机数/包括 1 个小数位
【发布时间】:2014-06-23 10:18:17
【问题描述】:

我可以很容易地生成一个介于 1 和 3 之间的随机数。

float x = Random.Range(1, 3);

但我试图生成一个介于 1 和 3 之间的随机数,包括 1 个小数位。 即 1.0、1.1、1.2 - 2.8、2.9、3.0 任何帮助表示赞赏。我发现没有简单的功能可以做到这一点。

注意 - 我在 Unity 中使用 .cs 脚本

【问题讨论】:

    标签: c# random unity3d int


    【解决方案1】:

    您可以像这样将结果相乘:

    float result = rnd.Next(10, 31) * .1f;
    

    这将产生从1.03.0 的范围,步进.1

    【讨论】:

    • 改为rnd.Next(10, 31),上限为独占,不包括。
    • 是的,我刚刚发布了那个。更新中。
    • 对不起,我应该注意到我正在使用 Unity 程序中的脚本来执行此操作。获取错误,“UnityEngine.Random”不包含“Next”的定义,并且未找到“UnityEngine.Random”类型的扩展方法“Next”。
    • 不能说我对 Unity 很熟悉,但它就像 C# 一样,这个概念应该仍然有效。使用您的原始方法名称Random.Range,但更新值并像我提到的那样相乘。它应该可以工作。
    • 我认为它的工作原理是它没有抛出错误,现在有代码 double result = Random.Range(-41, 41) * .1 问题是我将它放入'transform.position'的方法, 需要一个浮点数....'UnityEngine.Vector3(float,float,float)' 的最佳重载方法匹配有一些无效参数
    【解决方案2】:

    这看起来很可靠。

    class Program
    {
        static void Main(string[] args)
        {
            float fMyNumber = 0;
    
            Random rnd = new Random(Guid.NewGuid().GetHashCode());
            for (int j = 0; j < 20; j++) {
                fMyNumber = rnd.Next(1, 4);
                fMyNumber += ((float)rnd.Next(10)) / 10;
                Console.WriteLine(fMyNumber.ToString("0.0"));
            }
            Console.ReadLine();
        }
    }
    

    【讨论】:

      【解决方案3】:

      只需将十进制数字添加到您的原始代码中:

      Random.Range(1.0, 3.0);
      

      【讨论】:

        【解决方案4】:

        确保您应用 Random.Range() 方法的变量是浮点数而不是整数。此外,在使用该方法的地方,请确保在每个浮点数之后加上 f,例如随机范围(1.0f,3.0f)。

        Random.Range 是最大排他性的,因此您可能希望使用 3.1f 最多包含 3.0f。

        我知道这个帖子很旧,只是想我会尝试帮助其他看到它的人。

        【讨论】:

          【解决方案5】:

          对于使用 Unity 的用户,请使用 System.Random。

          例如:

          System.Random rnd = new System.Random();
          

          Unity 有它自己的随机对象。

          【讨论】:

            猜你喜欢
            • 2014-04-09
            • 2014-04-11
            • 1970-01-01
            • 2013-01-02
            • 1970-01-01
            • 2010-12-06
            • 2011-08-19
            • 2011-07-07
            • 2011-01-23
            相关资源
            最近更新 更多