簡體   English   中英

如何創建一個包含“n”個隨機整數的數組?

[英]How to create a array with “n” random integers?

創建兩個包含 n 個元素的Integer ArrayLists ,每個元素將從用戶那里獲取 n。

所以基本上如果用戶輸入 '6' 需要創建兩個具有 6 個元素的數組。 我該怎么做?

這就是我所擁有的……但它甚至遠不正確。

Scanner input= new Scanner(System.in);
    System.out.println("please enter a integer 'n' ");
    int x= input.nextInt();

    int[] a = { 1, 4, 9, 16 };
    int[] b = { 9, 7, 4, 9, 11 };

如果你想從一個區間生成隨機整數數組,這里有選項

// generate 100 random number between 0 to 100 
int[]  randomIntsArray = IntStream.generate(() -> new Random().nextInt(100)).limit(100).toArray();
//generate 100 random number between 100 to 200
int[]  randomIntsArray = IntStream.generate(() -> new Random().nextInt(100) + 100).limit(100).toArray();

您可以使用這樣的掃描儀來獲取用戶的輸入 -

Scanner input= new Scanner(System.in);
System.out.println("Enter the array size: ");
int n = input.nextInt(); 

現在創建一個函數generateRandomArray(int n)像這樣 -

public List<Integer> generateRandomArray(int n){
    ArrayList<Integer> list = new ArrayList<Integer>(n);
    Random random = new Random();
    
    for (int i = 0; i < n; i++)
    {
        list.add(random.nextInt(1000));
    }
   return list;
}  

這里 - random.nextInt(1000)將生成一個范圍為 0 到 1000 的隨機數。您可以根據需要修復范圍。

現在您可以使用用戶提供的值n調用該函數 -

ArrayList<Integer> list1 = generateRandomArray(n);
ArrayList<Integer> list2 = generateRandomArray(n);

希望它會有所幫助。

為了完整起見,自以來,您可以

  1. 從作為供應商的隨機數生成器的下一個 int 生成一個 int 流()->r.nextInt()
  2. 將流限制為您想要的大小
  3. 將其轉換為數組

    int[] randomIntsArray=IntStream.generate(r::nextInt).limit(size).toArray()

Scanner input= new Scanner(System.in);
System.out.println("please enter a integer 'n' ");
int x= input.nextInt();

int[] a = new int[x];
int[] b = new int[x];

這基本上是整數數組而不是數組列表

對於數組列表,您需要使用創建它

 List<Integer> integerList=new ArrayList<Integer>();
    int x = input.nextInt();

    int[] a = new int[x];
    int[] b = new int[x];

然后你可以填充你需要的值

首先創建您的 ArrayList of Integers。 然后您可以根據需要添加任意數量的整數。

ArrayList<Integer> ar = new ArrayList<Integer>();
ar.add(1);

我不會重復其他人所說的,因為它已經足夠了,但也許理解 ArrayLists 和 Arrays 之間的區別會讓你受益。

ArrayList 文檔

數組文檔

ArrayLists 動態增長,而 Arrays 有固定大小。 您可以按照其他人提供的優秀答案找到如何填充它們。

從 1.8

// Since, as per your question, you're using arrays even though
// you state you want ArrayLists, we will assume you know why you're
// doing so.
int[] a = new int[x];
int[] b = new int[x];
Random random = new Random();
IntUnaryOperator unaryOpInt = (p) -> random.nextInt(maxIntVal);
// populate array a with random numbers
Arrays.setAll(a, unaryOpInt); 
// populate array b with random numbers
Arrays.setAll(b, unaryOpInt); 
// Since, as per your question, you require ArrayLists, you can
// create ArrayLists from arrays a and b as follows.
// create an ArrayList from array a
ArrayList<Integer> aArrList = new ArrayList<>(IntStream.of(a).boxed().collect(Collectors.toList()));
// create an ArrayList from array b
ArrayList<Integer> bArrList = new ArrayList<>(IntStream.of(b).boxed().collect(Collectors.toList()));

話雖如此,但我只是保持簡單,並使用循環來初始化為隨機值,並且如果我需要 ArrayLists 或反之亦然,則不必使用數組。

您可以使用MockNeat (免責聲明我是作者):

MockNeat mockNeat = MockNeat.threadLocal();
MockUnitInt intUnit = mockNeat.ints().range(0, 100);

int[] arr1 = intUnit.arrayPrimitive(100).val();
Integer[] arr2 = intUnit.array(100).val();
List<Integer> list1 = intUnit.list(100).val();
List<List<Integer>> list2 = intUnit.list(100).list(100).val();

該庫可以很容易地描述生成任意數據的行為,然后重用這種“行為”並用它生成各種結構。

您可以使用ThreadLocalRandom

int[] a = IntStream.range(0, n).map(i -> ThreadLocalRandom.current().nextInt()).toArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM