Random Walker(圆圈)比其他轴更频繁地向上移动

Random Walker (circle) move up much more frequent than other axis

所以这是我的一个小项目,只是为了好玩。我尝试使用 libgdx 在 Java 中重新创建 random Walker。

现在我认为我的代码非常成功,因为它可以正常工作(也许)。

但是有一个问题,圆比其他轴更倾向于向上移动(yaxis+)。

我花了 2 天时间才找到解决方案。还是找不到我哪里做错了。

所以这是代码

{
    ShapeRenderer sr;
    OrthographicCamera cam;
    Random r;
    int rand;
    float x;
    float y;

    @Override
    public void create()
    {
        sr = new ShapeRenderer();
        cam = new OrthographicCamera();
        cam.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

        r = new Random();

        x = Gdx.graphics.getWidth()/2;
        y = Gdx.graphics.getHeight()/2;
    }

    @Override
    public void render()
    {        
        cam.update();   

        rand = r.nextInt(3);



        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        sr.begin(ShapeRenderer.ShapeType.Filled);
        sr.setColor(Color.RED);
        sr.circle(x, y, 10);
        sr.end();

        switch(rand)
        {
            case 0:
                x = x + 100 * Gdx.graphics.getDeltaTime();
                break;

            case 1:
                x = x - 100 * Gdx.graphics.getDeltaTime();
                break;
            case 2:
                y = y + 100 * Gdx.graphics.getDeltaTime();
                break;

            case 3:
                y = y - 100 * Gdx.graphics.getDeltaTime();
                break;
                default:

        }
    }```

所以你的问题是 Random.nextInt(n) 方法的上限是独占的

    // Returns number between 0-9 
    int next = ran.nextInt(10); 

所以你需要使用

    rand = r.nextInt(4);

您正在做的是在 0->2 之间生成随机数,您需要它为 0->3 以包含向下的 y 轴