Программа на Java для генерации случайных чисел с использованием метода умножения с переносом
В информатике метод умножения с переносом (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,
- a is any multiplier,
- m is modulus,
- c is carry, and
- 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 и многому другому, см. Полный курс подготовки к собеседованию .