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

 


 Связанные темы