数组密度和稀疏数组

时间:2017-10-11 22:25:35

标签: java arrays

import java.util.Scanner;
import java.util.Random;

public class Project_2 {

public static void main(String[] args) // TODO Auto-generated      methodstub
{
    int userLength;

    Scanner input = new Scanner(System.in);
    System.out.print("Enter a length for an Array : ");
    userLength = input.nextInt();

    while (userLength < 1)
    {
        System.out.print("Enter a length for an Array : ");
        userLength = input.nextInt();
    }

    int [] arrayFirst  = new int [userLength];
    System.out.print("The length is: " + arrayFirst.length + "\n");
    Random randomInt = new Random();

    for (int i = 0; i < arrayFirst.length; i++ )
    {
        arrayFirst[i] = randomInt.nextInt(100001);
    }
}
  

编写一个首先提示用户输入整数数组的Java程序   长度和“双精度”阵列密度。你会用这些   为下面的实验创建数组的值。也提示   如果用户超出预期范围,则重新输入值:   数组的长度应为正整数和密度   应该是double类型并且在[0.0,1.0]范围内。

     

编写一个采用整数长度和数组密度的方法   键入double作为参数并返回一个新的类型数组   int表示密集的数组。对于数组中的每个条目,进行比较   随机数在[0.0,1.0]范围内的密度(即0.0 up   到,但不包括,1.0)确定条目是否应该   是0(提示:请参阅java.util.Random类)。如果条目应为0,   只需填充条目即可。如果条目不为零,   用[1,1000000]范围内的随机整数填充它(即1   通过这种方式,指定数组长度为100和   密度为0.25将导致长度为100的阵列打开   平均75%的值等于0。

我对这个问题的第一部分有很好的理解,但我对问题的密度方面完全无能为力。然后我用随机数填充数组只是为了感受一下。但是,当涉及到这个问题的密度方面时,我完全无法理解我应该做些什么。我所知道的是,数组的密度定义为非零元素的数量与该数组中所有元素的总数之比。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不想为你编写代码,但你基本上需要为数组的每个字段做两件事之一:

  • 生成0到1之间的随机数x。如果x大于或等于密度,请将此字段设置为0.
  • 否则,如果x小于密度,请将字段设置为1到1000000之间的随机值。