Программа на Java для генерации случайных чисел с использованием метода умножения с переносом

Опубликовано: 1 Декабря, 2021

В информатике метод умножения с переносом (MWC) - это метод, изобретенный Джорджем Марсалья для генерации последовательностей случайных целых чисел на основе начального набора от двух до многих тысяч случайно выбранных начальных значений. Основное преимущество метода MWC заключается в том, что он использует простую компьютерную целочисленную арифметику и приводит к очень быстрой генерации последовательностей случайных чисел с огромными периодами в диапазоне от примерно 2 60 до 2 2000000 .

Пример:

 Ввод: длина = 5.
Выход: 1581 16 1932 1969 1384

Ввод: длина = 2
Выход: 985 3568

Используемая формула:

x(n) = (a*x(n-r) + c(n-1))mod n

c(n) = (a*x(n-r) + c(n-1))/n

where,

  1.  a is any multiplier,
  2.  m is modulus, 
  3.  c is carry, and
  4.  r is a initial number of seeds.

Ява

// Java Program to generate a random numbers
// Based on Multiply with carry method
import java.util.Random;
public class Main {
public static void main(String args[])
{
int Maximum_Sequence_Elements = 10 ;
Random random = new Random();
int Base = 2000 ;
int Multiplier = random.nextInt(Base);
int r = 1 ;
int [] c = new int [Maximum_Sequence_Elements];
int [] x = new int [Maximum_Sequence_Elements];
c[ 0 ] = random.nextInt(Multiplier);
x[ 0 ] = random.nextInt(Base);
System.out.print( "The random number sequence is: "
+ x[ 0 ]);
// generating sequence
for ( int i = 1 ; i < Maximum_Sequence_Elements;
i++) {
x[i]
= (Multiplier * x[i - r] + c[i - 1 ]) % Base;
c[i]
= (Multiplier * x[i - r] + c[i - 1 ]) / Base;
System.out.print( " " + x[i]);
}
}
}
Выход
 Последовательность случайных чисел: 508 1021 1549 857 414 1187 1425 1557 1945 1922

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .