Random.nextFloat is not applicable for floats?

前端 未结 4 2290
清酒与你
清酒与你 2021-02-13 02:02
float minX = 50.0f;
float maxX = 100.0f;

Random rand = new Random();

float finalX = rand.nextFloat(maxX - minX + 1.0f) + minX;

\"The method nextFloat

相关标签:
4条回答
  • 2021-02-13 02:05

    Random only return floats between 0 and 1.0 (no overloaded version like for integers): See the Javadocs here: http://download.oracle.com/javase/6/docs/api/java/util/Random.html#nextFloat()

    I think you can do what you are intending with:

    float finalX = (maxX - minX) * rand.nextFloat() + minX;
    
    0 讨论(0)
  • 2021-02-13 02:08

    The documentation is very clear, nextFloat() doesn't take any arguments. It'll give you a number between 0 and 1, and you'll need to use that in your calculation.

    edit: example

    private Random random = new Random();
    public float nextFloat(float min, float max)
    {
        return min + random.nextFloat() * (max - min)
    }
    
    0 讨论(0)
  • 2021-02-13 02:21

    It should read like the following as others are suggesting.

    float finalX = rand.nextFloat();
    // do other stuff
    
    0 讨论(0)
  • 2021-02-13 02:28

    The nextFloat method doesn't take an argument. Call it, then scale the returned value over the range you want.

    float minX = 50.0f;
    float maxX = 100.0f;
    
    Random rand = new Random();
    
    float finalX = rand.nextFloat() * (maxX - minX) + minX;
    
    0 讨论(0)
提交回复
热议问题