Java. Клас Random. Методи отримання наборів випадкових чисел

Клас Random. Методи отримання наборів випадкових чисел


Зміст


Пошук на інших ресурсах:

1. Метод doubles(). Створити потік даних, що містить випадкові числа типу double

Метод doubles() створює потік даних, який складається з випадкових чисел типу double. Числа мають значення в межах від 0 до 1. Метод має декілька реалізацій. Найбільш поширені реалізації методу виглядають наступним чином

DoubleStream doubles();
DoubleStream doubles(long streamSize);

тут

  • streamSize – кількість чисел, які потрібно згенерувати в потоці даних.

Перша реалізація (без параметрів) дозволяє генерувати необмежений потік даних. Друга реалізація методу doubles() генерує потік даних фіксованого розміру.

Щоб використовувати клас DoubleStream потрібно підключити модуль

import java.util.stream.DoubleStream;

 

Приклад.

import java.util.Iterator; // потрібне для використання класу Iterator<>
import java.util.Random;   // потрібне для використання класу Random
import java.util.stream.DoubleStream; // потрібне для використання класу DoubleStream

public class MathFunctions {

  public static void main(String[] args) {
    // 1. Створити потік на основі довільного початкового значення
    Random r1 = new Random(); //

    // 2. Отримати потік з 10 чисел типу double
    DoubleStream ds1 = r1.doubles(10);

    // 3. Отримати ітератор на потік ds1
    Iterator<Double> it1 = ds1.iterator();

    // 4. Вивести в циклі 10 випадкових чисел з потоку ds1
    System.out.println("Stream ds1:");

    while (it1.hasNext()) {
      System.out.println(it1.next());
    }
  }
}

Результат

Stream ds1:
0.03296957043047
0.5816373543355657
0.6067884839512304
0.3600735235508934
0.5041601996294538
0.8372554459494158
0.7894095095554403
0.23663204256820447
0.5334022228843057
0.5142652199413285

 

2. Метод ints(). Отримати дані типу int у вигляді потоку випадкових чисел

Метод ints() створює потік випадкових чисел типу IntStream. Найбільш поширені реалізації методу мають вигляд

IntStream ints();
IntStream ints(long streamSize);

тут

  • streamSize – кількість елементів у потоці даних типу int.

Перша реалізація методу (без параметрів) створює потік випадкових чисел типу int необмеженого розміру. Друга реалізація дозволяє встановити обмеження в потоці розміром streamSize.

Щоб використовувати тип IntStream та йому подібні на початку модуля потрібно включити рядок

import java.util.stream.*;

 

Приклад.

У прикладі методом ints() без параметрів створюється потік необмеженого розміру. Потім виводяться перші 5 елементів потоку.

import java.util.Iterator; // потрібне для використання класу Iterator<>
import java.util.Random;   // потрібне для використання класу Random
import java.util.stream.*; // потрібне для використання класу IntStream

public class MathFunctions {

  public static void main(String[] args) {
    // 1. Створити потік на основі довільного початкового значення
    Random r1 = new Random();

    // 2. Отримати потік з необмеженою кількістю чисел типу int
    IntStream rndInt = r1.ints();

    // 3. Отримати ітератор на потік rndInt
    Iterator<Integer> it1 = rndInt.iterator();

    // 4. Вивести в циклі 5 випадкових чисел з потоку rndInt
    int value;

    System.out.println("Stream rndInt:");

    for (int i=0; i<5; i++) {
      // Отримати випадкове число
      value = it1.next();

      // Вивести число на екран
      System.out.println(value);
    }
  }
}

Результат

Stream rndInt:
2119189406
-15495572
-2068391741
271674312
742325160

 

3. Метод longs(). Отримати дані типу long у вигляді потоку випадкових чисел

Метод longs() подібний до методів doubles() та ints(). Метод формує потік випадкових чисел типу LongStream. Оголошення найбільш поширених реалізацій методу має вигляд

LongStream longs();
LongStream longs(long streamSize);

де

  • streamSize – кількість чисел типу long, які потрібно сформувати.

Перша реалізація методу формує потік чисел необмеженого розміру. Друга реалізація формує потік з 10 чисел.

Приклад.

У прикладі спочатку формується потік з 10 випадкових чисел типу long. Потім цей потік виводиться на екран.

import java.util.Iterator; // потрібне для використання класу Iterator<>
import java.util.Random;   // потрібне для використання класу Random
import java.util.stream.*; // потрібне для використання класу LongStream

public class MathFunctions {

  public static void main(String[] args) {
    // 1. Створити потік на основі довільного початкового значення
    Random rnd = new Random();

    // 2. Отримати потік що містить 10 чисел типу long - метод longs()
    LongStream stream = rnd.longs(10);

    // 3. Отримати ітератор на потік stream
    Iterator<Long> it = stream.iterator();

    // 4. Вивести в циклі 10 випадкових чисел з потоку stream
    System.out.println("Stream of Long numbers:");

    for (int i=0; i<10; i++) {
      // Отримати випадкове число типу long
      long value = it.next();

      // Вивести число на екран
      System.out.println(value);
    }
  }
}

Результат

Stream of Long numbers:
-846271452660413200
-3239665480282540853
-4825523866103987302
-6364844712541754488
752243074034471911
6039172197582870129
9130557788351257634
5320620246218395762
-5038665701090253375
-924371785716259808

 

4. Метод nextBytes(). Отримати масив випадкових чисел типу byte[]

Метод nextBytes() заповнює вхідний масив випадковими числами, які мають тип byte. Згідно з документацією синтаксис оголошення методу наступний

void nextBytes(byte[] bytes);

тут

  • bytes – заданий масив деякої довжини. Заповнюються всі елементи масиву. Значення елементів масиву лежать в межах [-128; 127].

Приклад.

import java.util.Random;

public class MathFunctions {

  public static void main(String[] args) {
    // 1. Створити потік на основі довільного початкового значення
    Random rnd = new Random();

    // 2. Створити масив AB з 10 елементів типу byte
    byte[] AB = new byte[10];

    // 3. Заповнити масив AB випадковими числами
    rnd.nextBytes(AB);

    // 4. Вивести масив на екран
    System.out.println("Array AB:");

    for (int i=0; i<AB.length; i++)
      System.out.println(AB[i]+" ");
  }
}

Результат

Array AB:
-67
-86
98
-61
16
-44
-73
96
-40
-80

 


Споріднені теми