程序生成一组浮点数存入数组中并输出:
代码如下:
public static void
printFloat(float[] arr) {
float array[] = new float[50];
Random r = new Random();
for (int i = 0; i < 50; i++) {
double d = r.nextDouble() * 500;// 保证0-10之间的数
float x = ((int) d) / 100f;// 去掉两位 小数后面的值
array[i] = x;// 存入数组
}
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
随机Random类:查看了java API 找出Random随机生成一组浮点数的方法
nextFloat
public float nextFloat()
返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float
值。
nextFloat 的常规协定是,伪随机地生成并返回一个从 0.0f(包括)到
1.0f(包括)范围内均匀选择(大致)的 float 值。所有可能的 224 个 float 值(其形式为
m x2-24,其中
m 是一个小于 224 的正整数)的生成概率(大致)相同。
Random 类按如下方式实现 nextFloat 方法:
public float nextFloat() {
return next(24) / ((float)(1 << 24));
}
前面的描述中使用了不确定的词“大致”,因为 next
方法只是一个大致上独立选择位的无偏源。如果它是一个随机选择位的最佳来源,那么给出的算法应该从规定范围完全一致地选择 float
值。
[在 Java 的早期版本中,结果被错误地计算为:
return next(30) / ((float)(1
<< 30));
这可能看似等效(如果不是更好的话),但实际上由于浮点数舍入中的偏差,它会导致轻微的不均匀性:有效数的低位更可能是 0 而不是
1。]
返回:
下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float
值
找出区间输出每桶中的数据:
int sum1 = 0, sum2 = 0, sum3 = 0, sum0 = 0,
sum4 = 0;
for (int i = 0; i < array.length; i++) {
// System.out.print(array[i]);
if (array[i] > 0 && array[i] <= 1) {
sum0 += 1;
} else if (array[i] > 1 && array[i] <=
2) {
sum1 += 1;
} else if (array[i] > 2 && array[i] <=
3) {
sum2 += 1;
} else if (array[i] > 3 && array[i]
<= 4) {
sum3 += 1;
} else {
sum4 += 1;
}
}
System.out.print("sum0=" + sum0 + ":");
System.out.print("sum1=" + sum1 + ":");
System.out.print("sum2=" + sum2 + ":");
System.out.print("sum3=" + sum3 + ":");
System.out.print("sum4=" + sum4);
}