在 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随机