Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fill an array with random numbers [duplicate]

Tags:

java

arrays

I need to create an array using a constructor, add a method to print the array as a sequence and a method to fill the array with random numbers of the type double.

Here's what I've done so far:

import java.util.Random;

public class NumberList {
    private static double[] anArray;

    public static double[] list() {
        return new double[10];
    }
    
    public static void print(){
        System.out.println(String.join(" ", anArray);
    }

    public static double randomFill() {
        return (new Random()).nextInt();
    }
    
    public static void main(String args[]) {
        // TODO
    }
}

I'm struggling to figure out how to fill the array with the random numbers I have generated in the randomFill method. Thanks!

like image 654
JaAnTr Avatar asked Dec 04 '13 16:12

JaAnTr


People also ask

How do you fill an array with random positive numbers in Java?

random() returns random double value between 0 and 1 , we multiply it by 100 to get random numbers between 0 to 100 and then we cast it into type int . To store random double values in an array we don't need to cast the double value returned by Math. random() function.


4 Answers

You can use IntStream ints() or DoubleStream doubles() available as of java 8 in Random class. something like this will work, depends if you want double or ints etc.

Random random = new Random();

int[] array = random.ints(100000, 10,100000).toArray();

you can print the array and you'll get 100000 random integers.

like image 103
Samir Ouldsaadi Avatar answered Sep 26 '22 20:09

Samir Ouldsaadi


You need to add logic to assign random values to double[] array using randomFill method.

Change

 public static double[] list(){
    anArray = new double[10];   
    return anArray;
 }

To

 public static double[] list() {
    anArray = new double[10];
    for(int i=0;i<anArray.length;i++)
    {
        anArray[i] = randomFill();
    }
    return anArray;
}

Then you can call methods, including list() and print() in main method to generate random double values and print the double[] array in console.

 public static void main(String args[]) {

list();
print();
 }

One result is as follows:

-2.89783865E8 
1.605018025E9 
-1.55668528E9 
-1.589135498E9 
-6.33159518E8 
-1.038278095E9 
-4.2632203E8 
1.310182951E9 
1.350639892E9 
6.7543543E7 
like image 43
MouseLearnJava Avatar answered Sep 26 '22 20:09

MouseLearnJava


This seems a little bit like homework. So I'll give you some hints. The good news is that you're almost there! You've done most of the hard work already!

  • Think about a construct that can help you iterate over the array. Is there some sort of construct (a loop perhaps?) that you can use to iterate over each location in the array?
  • Within this construct, for each iteration of the loop, you will assign the value returned by randomFill() to the current location of the array.

Note: Your array is double, but you are returning ints from randomFill. So there's something you need to fix there.

like image 37
Vivin Paliath Avatar answered Sep 22 '22 20:09

Vivin Paliath


People don't see the nice cool Stream producers all over the Java libs.

public static double[] list(){
    return new Random().ints().asDoubleStream().toArray();
}
like image 26
Johannes Kuhn Avatar answered Sep 22 '22 20:09

Johannes Kuhn