生成50个随机浮点数阵列值唯一



我正在尝试编写代码,该代码存储50个随机生成的浮点编号。使用常规的循环循环循环浏览值并删除小于0.5的任何值。然后使用for-each循环打印出保留的值。

这是我到目前为止的代码,我不知道从这里去哪里...

import java.util.ArrayList;
public class fiftyFloats {
    public static void main (String [] args) { 
        //create a reference for the array list 
        ArrayList <Float> vals; 
        //reserve space for it in memeory 
        vals = new ArrayList <Float> (50);
        for (int i = 0; i<vals.size(); i++){
            i = new Float
        }
        for (Integer atPos: vals) { 
            System.out.println(vals.toString()); 
        }
    }
}

有几种方法可以取决于要生成"随机"数字的方式。

java.util.random具有一些可以使用的功能,包括" NextFloat",该功能返回浮点类型的0和1之间的随机值。

so

ArrayList <Float> vals = new ArrayList<>();
Random rand = new Random();
for (int i = 0; i < 50; i++) {
     vals.add(rand.nextFloat());
}

那么,再次循环浏览列表并删除不符合您的标准的任何数字应该很容易。您无需在阵列列表中预先保留50个景点,这是使用它的好处之一,您可以动态地添加它。

您的循环是行不通的。您已经将" i"定义为循环代码中的整数,现在您正在尝试创建具有相同名称的浮子。您可以在循环中使用" i",但它将是您在" int i = 0;"

上指定的" i"。

总的来说,您似乎很新,并且不了解有关Java的核心内容,例如变量的工作方式。咨询导师/老师/基本文本可能会对您有很大帮助。

  1. 要生成一个随机数,您需要使用随机类。

note - random.nextfloat()只会在0.0到1之间生成一个数字,如果要包括较大的数字,则需要乘以

  1. 您用来控制for循环的整数无法重新分配到环路内的浮标

  2. 您不需要将arraylist.tostring()放在循环中

    import java.util.ArrayList;
    import java.util.Random;
    public class fiftyFloats {
    public static void main(String[] args) {
    ArrayList<Float> vals = new ArrayList<Float>();
    Float randomNum;
    Random rand = new Random();
    for (int i = 0; i < 50; i++) {
        randomNum = rand.nextFloat();
        if (randomNum > 0.5) {
            vals.add(randomNum);
        }
    }
    System.out.println(vals.toString());
    }}
    

我认为这是您在这里尝试做的:

    //create a reference for the array list 
    ArrayList<Float> vals;
    //reserve space for it in memeory 
    vals = new ArrayList<Float>(50);
    Random rand = new Random();
    for (int i = 0; i < 50; i++) {
        vals.add(rand.nextFloat());
    }
    for (Float val : vals) {
        System.out.println(val.toString());
    }

在您的原始代码中要指出的一些事情:

    Float fl = new Float(2.2);
    //create a reference for the array list 
    ArrayList<Float> vals;
    // Here, you've set the _Capacity_, not the size.
    vals = new ArrayList<Float>(50); // vals.size() => 0
    // Based on above, you are essentially saying "never do these things"
    // -> for (int i = 0; i < 0; i++)
    for (int i = 0; i < vals.size(); i++) {
        // this, if a valid expression, would have an incompatible type
        // since i is of type int.
        // if you were to use this, you would need to use a constructor such as
        // new Float(1.2).
        i = new Float
    }
    // In this enhanced loop, you are assigning a value from ArrayList vals
    // to atPos, not the position. Since ArrayList is of type Float,
    // atPos is a Float.
    for (Integer atPos : vals) {
        System.out.println(vals.toString());
    }

,由于您需要的浮点值不是在min和max之间引用,因此您可以使用Nano Time

示例:

List <Float> vals = new ArrayList <Float> (50);
for (int i = 0; i<vals.size(); i++){
    vals.add (System.current/100.0f);
}**

最新更新