[go: up one dir, main page]

0% found this document useful (0 votes)
91 views4 pages

LCM & CLCM Printout

The document describes a Java program that generates pseudo-random numbers using two different methods: the Linear Congruential Method (LCM) and the Combined Linear Congruential Method (CLCM). The program allows the user to choose which method to use and then prompts them to enter parameters like the number of random numbers, seed values, multipliers, moduli, and increments. It then generates and displays the random numbers.

Uploaded by

Mahesh Abnave
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views4 pages

LCM & CLCM Printout

The document describes a Java program that generates pseudo-random numbers using two different methods: the Linear Congruential Method (LCM) and the Combined Linear Congruential Method (CLCM). The program allows the user to choose which method to use and then prompts them to enter parameters like the number of random numbers, seed values, multipliers, moduli, and increments. It then generates and displays the random numbers.

Uploaded by

Mahesh Abnave
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Mahesh Ashok Abnve 500862 Batch III

Title: Generating Random numbers using LCM & CLCM methods


Code
package rngenerationsdemo;

import java.io.*;

/**
* @author Mahesh
*/
public class Main {

public static void main(String[] args) throws Exception {

int c, k, choice;

while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" Generating pseudo random numbers using LCM &
CLCM methods");
System.out.println("Which method to use:");
System.out.println("1. LCM");
System.out.println("2. CLCM");
System.out.println("3. Exit");
System.out.println("----------------------------");
System.out.print("Enter choice:");
choice = Integer.parseInt(br.readLine());

switch (choice) {
case 1: {
System.out.print("How many random numbers to generate: ");
k = Integer.parseInt(br.readLine());

int m, a;
double[] X = new double[k+1];
double[] R = new double[k];

System.out.println("Enter input");
System.out.print("Seed (Xo): ");
X[0] = Double.parseDouble(br.readLine());
System.out.print("Multiplier (a):");
a = Integer.parseInt(br.readLine());
System.out.print("Modulus (m):");
m = Integer.parseInt(br.readLine());
System.out.print("Increment (c):");
c = Integer.parseInt(br.readLine());

for (int i = 0; i < 3; i++) {


X[i + 1] = (a * X[i] + c) % m;
}

for (int j = 1; j < 4; j++) {


R[j-1] = X[j] / m;
System.out.println("Random number " + j + ": " + R[j-1]);
}

break;
}
case 2: {
System.out.print("How many random numbers to generate: ");
k = Integer.parseInt(br.readLine());

int a[] = new int[k];


int m[] = new int[k];
double[][] Xig = new double[k + 1][k]; //individual generator
double[] Xcg = new double[k]; //combined generator
double[] R = new double[k];

System.out.println("Enter input");
System.out.println("Seeds for generators: ");
for (int i = 0; i < k; i++) { //accepting seed values X10,X20,
X30
System.out.print(" X" + i + "0: ");
Xig[0][i] = Double.parseDouble(br.readLine());
}

System.out.println("Multipliers:");
for (int i = 0; i < k; i++) {
System.out.print(" a" + i + ":");
a[i] = Integer.parseInt(br.readLine());
}

System.out.println("Moduli:");
for (int i = 0; i < k; i++) {
System.out.print(" m" + i + ":");
m[i] = Integer.parseInt(br.readLine());
}

System.out.print("Increment:");
c = Integer.parseInt(br.readLine());

//generating individual generator


for (int i = 0; i < k; i++) {
for (int j = 0; j < k; j++) {
Xig[i + 1][j] = (a[j] * Xig[i][j] + c) % m[j];
}
}

//generating combined generator


double Xtemp; //Xtemp is the sum term in Xcg
System.out.println();
for (int i = 1; i <= k; i++) {
Xtemp=0;
for (int j = 0; j < k; j++) {
Xtemp = Xtemp + Math.pow(-1, j) * Xig[i][j];
}
Xcg[i-1] = Xtemp % (m[0] - 1);
if (Xcg[i-1] > 0) {
R[i - 1] = Xcg[i-1] / m[0];
} else if (Xcg[i-1] == 0) {
R[i - 1] = (m[0] - 1) / m[0];
}
System.out.println("Random number " + i + ": " + R[i - 1]);
}
break;
}
case 3: {
System.out.println("\nExiting...");
System.exit(0);
break;
}
}
}
}
}

Output
Gaenerating pseudo random numbers using LCM & CLCM method
Which method to use:
1. LCM
2. CLCM
3. Exit
----------------------------
Enter choice:1
How many random numbers to generate: 3
Enter input
Seed (Xo): 37
Multiplier (a):7
Modulus (m):100
Increment (c):29
Random number 1: 0.88
Random number 2: 0.45
Random number 3: 0.44

Generating pseudo random numbers using LCM & CLCM method


Which method to use:
1. LCM
2. CLCM
3. Exit
----------------------------
Enter choice:2
How many random numbers to generate: 3
Enter input
Seeds for generators:
X00: 100
X10: 300
X20: 500
Multipliers:
a0:157
a1:146
a2:142
Moduli:
m0:32363
m1:31727
m2:31657
Increment:0

Random number 1: 0.34956586225010045


Random number 2: 0.08383030003398943
Random number 3: 0.05144764082439823

Generating pseudo random numbers using LCA method


Which method to use:
1. LCM
2. CLCM
3. Exit
----------------------------
Enter choice:3

Exiting...

You might also like