【问题标题】:generating 50 random float arraylist value unique生成 50 个随机浮点数组列表值唯一
【发布时间】:2017-05-01 04:08:32
【问题描述】:
我正在尝试编写将 50 个随机生成的浮点数存储在 ArrayList 中的代码。使用常规的 for 循环遍历这些值并删除任何小于 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
arrays
arraylist
random
【解决方案1】:
由于您需要的浮点值未在 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);
}**
【解决方案2】:
我认为这就是您在这里尝试做的事情:
//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());
}
【解决方案3】:
- 要生成随机数,您需要使用 Random 类。
注意 - random.nextFloat() 只会生成一个介于 0.0 和 1 之间的数字,如果您想包含更大的数字,则需要将其相乘
不能将用于控制 for 循环的整数重新分配给循环内的浮点数
-
您不需要将 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());
}}
【解决方案4】:
有几种方法可以做到这一点,具体取决于您要如何生成“随机”数字。
java.util.Random 有一些可以使用的函数,包括“nextFloat”,它返回一个介于 0 和 1 之间的浮点类型的随机值。
所以
ArrayList <Float> vals = new ArrayList<>();
Random rand = new Random();
for (int i = 0; i < 50; i++) {
vals.add(rand.nextFloat());
}
然后应该很容易再次遍历列表并删除任何不符合您标准的数字。您不需要在 ArrayList 中预先保留 50 个位置,这是使用它的好处之一,您可以动态地添加它。
您的循环无法正常工作。您已经在循环代码中将“i”定义为整数,现在您正尝试创建一个具有相同名称的浮点数。您可以在循环中使用“i”,但它将是您在“int i = 0;”中指定的“i”
总体而言,您似乎是个新手,不了解有关 java 的一些核心内容,例如变量的工作原理。咨询导师/老师/基础课本可能会对您有很大帮助。