Это может произойти, когда переменная среды PATH указывает на неправильную установку java.
Вам нужно добавить логику для назначения случайных значений в 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
Вы можете просто решить его с помощью 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.
попробуйте следующее:
public void double randomFill(){
Random rand = new Random();
for(int i = 0; i < this.anArray.length(); i++){
this.anArray[i] = rand.nextInt();
}
}
Вы можете выполнить цикл через массив и в каждом итерационном вызове метод 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();
}
}
Возможно, самый чистый способ сделать это в Java 8:
private int[] randomIntArray() {
Random rand = new Random();
return IntStream.range(0, 23).map(i -> rand.nextInt()).toArray();
}
Люди не видят прекрасных продюсеров Stream во всех библиотеках Java.
public static double[] list(){
return new Random().ints().asDoubleStream().toArray();
}
Вы можете использовать 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 случайных чисел.
Это даст вам массив с 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];
}
}
}
} `
Вы можете вызвать метод 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;
Если случайность контролируется так, она всегда может генерировать любое количество точек данных заданного диапазона. Если случайный метод в 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;
}
}
Это похоже на домашнюю работу. Поэтому я дам вам несколько советов. Хорошая новость в том, что вы почти там! Вы уже проделали большую часть тяжелой работы!
randomFill()
, в текущее местоположение массива. Примечание. Ваш массив double
, но вы возвращаете int
s из randomFill
, Итак, вам нужно что-то исправить.