Создание случайных значений в массиве [дубликат]

Это может произойти, когда переменная среды PATH указывает на неправильную установку java.

5
задан JaAnTr 4 December 2013 в 18:41
поделиться

11 ответов

Вам нужно добавить логику для назначения случайных значений в double [] array с использованием метода randomFill.

Изменить

 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;
}

Затем вы можете вызвать методы, в том числе list () и print () в основном методе, для генерации случайных двойных значений и печати массива double [] в консоли.

 public static void main(String args[]) {

list();
print();
 }

Один результат выглядит следующим образом:

-2.89783865E8 
1.605018025E9 
-1.55668528E9 
-1.589135498E9 
-6.33159518E8 
-1.038278095E9 
-4.2632203E8 
1.310182951E9 
1.350639892E9 
6.7543543E7 
4
ответ дан MouseLearnJava 15 August 2018 в 20:24
поделиться

Вы можете просто решить его с помощью for-loop

private static double[] anArray;

public static void main(String args[]) {
    anArray = new double[10]; // create the Array with 10 slots
    Random rand = new Random(); // create a local variable for Random
    for (int i = 0; i < 10; i++) // create a loop that executes 10 times
    {
        anArray[i] = rand.nextInt(); // each execution through the loop
                                        // generates a new random number and
                                        // stores it in the array at the
                                        // position i of the for-loop
    }
    printArray(); // print the result
}

private static void printArray() {
    for (int i = 0; i < 10; i++) {
        System.out.println(anArray[i]);
    }
}

. В следующий раз, пожалуйста, используйте поиск этого сайта, потому что это очень распространенный вопрос на этом сайте, и вы можете найти много решений на google.

0
ответ дан DodgerThud 15 August 2018 в 20:24
поделиться

попробуйте следующее:

public void double randomFill(){

  Random rand = new Random();
  for(int i = 0; i < this.anArray.length(); i++){
    this.anArray[i] = rand.nextInt();
  }
}
0
ответ дан hawks 15 August 2018 в 20:24
поделиться

Вы можете выполнить цикл через массив и в каждом итерационном вызове метод randomFill. Проверьте это:

import java.util.Random;

public class NumberList {


    private static double[] anArray;

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

    public static void print(){
        for(double n: anArray){
            System.out.println(n+" ");
        }
    }


    public static double randomFill(){
        Random rand = new Random();
        int randomNum = rand.nextInt();
        return randomNum;
    }

    public static void main(String args[]) {
        list();
        for(int i = 0; i < anArray.length; i++){
            anArray[i] = randomFill();
        }
        print();
    }


}
1
ответ дан jarz 15 August 2018 в 20:24
поделиться

Возможно, самый чистый способ сделать это в Java 8:

private int[] randomIntArray() {
   Random rand = new Random();
   return IntStream.range(0, 23).map(i -> rand.nextInt()).toArray();
}
0
ответ дан Jeff smith 15 August 2018 в 20:24
поделиться

Люди не видят прекрасных продюсеров Stream во всех библиотеках Java.

public static double[] list(){
    return new Random().ints().asDoubleStream().toArray();
}
0
ответ дан Johannes Kuhn 15 August 2018 в 20:24
поделиться

Вы можете использовать IntStream (ints) или DoubleStream doubleles (), доступные с java 8 в классе Random. что-то вроде этого будет работать, зависит, хотите ли вы использовать double или int и т. д.

int [] array = new int [100000];

Random random = new Random ();

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

вы можете распечатать массив, и вы получите 100000 случайных чисел.

1
ответ дан Samir Ouldsaadi 15 August 2018 в 20:24
поделиться

Это даст вам массив с 50 случайными числами и отобразит наименьшее число в массиве. Я сделал это для задания в своем классе программирования.

public static void main(String args[]) {
    // TODO Auto-generated method stub

    int i;
    int[] array = new int[50];
    for(i = 0; i <  array.length; i++) {
        array[i] = (int)(Math.random() * 100);
        System.out.print(array[i] + "  ");

        int smallest = array[0];

        for (i=1; i<array.length; i++)
        {
        if (array[i]<smallest)
        smallest = array[i];
        }



    }

}

} `

0
ответ дан Steven Hollinger 15 August 2018 в 20:24
поделиться

Вы можете вызвать метод randomFill() в цикле и заполнить ваш массив в методе main(), как это.

public static void main(String args[]) {
    for(int i=0;i<anArray.length;i++){
        anArray[i] = randomFill();
    }
}

Хотя вам нужно использовать rand.nextDouble() в randomFill() поскольку вы, кажется, имеете массив double для заполнения.

double randomNum = rand.nextDouble();
return randomNum;
0
ответ дан SudoRahul 15 August 2018 в 20:24
поделиться

Если случайность контролируется так, она всегда может генерировать любое количество точек данных заданного диапазона. Если случайный метод в java используется только, мы не можем гарантировать, что все числа будут уникальными.

package edu.iu.common;

import java.util.ArrayList;
import java.util.Random;

public class RandomCentroidLocator {

public static void main(String [] args){
	
	int min =0;
	int max = 10;
	int numCentroids = 10;
	ArrayList<Integer> values = randomCentroids(min, max, numCentroids);	
	for(Integer i : values){
		System.out.print(i+" ");
	}
	
}

private static boolean unique(ArrayList<Integer> arr, int num, int numCentroids) {

	boolean status = true;
	int count=0;
	for(Integer i : arr){
		if(i==num){
			count++;
		}
	}
	if(count==1){
		status = true;
	}else if(count>1){
		status =false;
	}
	

	return status;
}

// generate random centroid Ids -> these Ids can be used to retrieve data
// from the data Points generated
// simply we are picking up random items from the data points
// in this case all the random numbers are unique
// it provides the necessary number of unique and random centroids
private static ArrayList<Integer> randomCentroids(int min, int max, int numCentroids) {

	Random random = new Random();
	ArrayList<Integer> values = new ArrayList<Integer>();
	int num = -1;
	int count = 0;
	do {
		num = random.nextInt(max - min + 1) + min;
		values.add(num);
		int index =values.size()-1;
		if(unique(values, num, numCentroids)){				
			count++;
		}else{
			values.remove(index);
		}
		
	} while (!( count == numCentroids));

	return values;

}

}

0
ответ дан Vibhatha Abeykoon 15 August 2018 в 20:24
поделиться

Это похоже на домашнюю работу. Поэтому я дам вам несколько советов. Хорошая новость в том, что вы почти там! Вы уже проделали большую часть тяжелой работы!

  • Подумайте о конструкции, которая может помочь вам выполнить итерацию по массиву. Есть ли какая-то конструкция (возможно, loop ?), Которую вы можете использовать для итерации по каждому месту в массиве?
  • Внутри этой конструкции для каждой итерации цикла, вы присвойте значение, возвращенное randomFill(), в текущее местоположение массива.

Примечание. Ваш массив double, но вы возвращаете int s из randomFill , Итак, вам нужно что-то исправить.

2
ответ дан Vivin Paliath 15 August 2018 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: