【发布时间】: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 脚本
【问题讨论】:
我可以很容易地生成一个介于 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 脚本
【问题讨论】:
您可以像这样将结果相乘:
float result = rnd.Next(10, 31) * .1f;
这将产生从1.0 到3.0 的范围,步进.1。
【讨论】:
Random.Range,但更新值并像我提到的那样相乘。它应该可以工作。
这看起来很可靠。
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();
}
}
【讨论】:
只需将十进制数字添加到您的原始代码中:
Random.Range(1.0, 3.0);
【讨论】:
确保您应用 Random.Range() 方法的变量是浮点数而不是整数。此外,在使用该方法的地方,请确保在每个浮点数之后加上 f,例如随机范围(1.0f,3.0f)。
Random.Range 是最大排他性的,因此您可能希望使用 3.1f 最多包含 3.0f。
我知道这个帖子很旧,只是想我会尝试帮助其他看到它的人。
【讨论】:
对于使用 Unity 的用户,请使用 System.Random。
例如:
System.Random rnd = new System.Random();
Unity 有它自己的随机对象。
【讨论】: