在 Unity3d 中集成随机值工作不正确
Integrating random values in Unity3d works incorrectlly
我有简单的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DLATEST : MonoBehaviour
{
int wx = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
wx += Random.Range(-1, 1);
Debug.Log(wx);
}
}
但我得到了奇怪的结果:0 -1 -2 -3 -4 -5 -6 -7 -8
wx 慢慢下降到负数,直到溢出。
我希望 wx 的值接近 0 并围绕它缓慢变化,但不会像现在这样下降。这是简单的数值积分,但它不正确。
我也试过这个代码:
int wx = 0;
int wxPrev = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
wx = wxPrev + Random.Range(-1, 1);
Debug.Log(wx);
wxPred = wx;
}
结果是一样的。
如果我调试 Random.Range(-1, 1) 只有那么一切正常,随机值是随机的。
我的代码有什么问题?谢谢。
如果你使用 Random.Range(int x, int y) 结果将是 >= x && < y
在你的情况下 Random.Range(-1,1) 总是 returns -1 或 0。
您可能需要 Random.Range(-1f,1f) - 强制使用 Random.Range(float,float) 而不是随机 int 或更改为 Random.Range(-1,2) 所以它会 return整数-1、0或1随机
我有简单的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DLATEST : MonoBehaviour
{
int wx = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
wx += Random.Range(-1, 1);
Debug.Log(wx);
}
}
但我得到了奇怪的结果:0 -1 -2 -3 -4 -5 -6 -7 -8
wx 慢慢下降到负数,直到溢出。
我希望 wx 的值接近 0 并围绕它缓慢变化,但不会像现在这样下降。这是简单的数值积分,但它不正确。
我也试过这个代码:
int wx = 0;
int wxPrev = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
wx = wxPrev + Random.Range(-1, 1);
Debug.Log(wx);
wxPred = wx;
}
结果是一样的。
如果我调试 Random.Range(-1, 1) 只有那么一切正常,随机值是随机的。
我的代码有什么问题?谢谢。
如果你使用 Random.Range(int x, int y) 结果将是 >= x && < y
在你的情况下 Random.Range(-1,1) 总是 returns -1 或 0。 您可能需要 Random.Range(-1f,1f) - 强制使用 Random.Range(float,float) 而不是随机 int 或更改为 Random.Range(-1,2) 所以它会 return整数-1、0或1随机