This is a java program generate pseudo-random numbers using Naor-Reingold Pseudo-Random function. Let p and l be prime numbers with l |p-1. Select an element g in Fp of multiplicative order l. Then for each n-dimensional vector a = (a1, …, an). Fa(x) = g^(a1^x1 * a2^x2 …).

Here is the source code of the Java Program to Implement Naor-Reingold Pseudo Random Function. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

`//This is a java program to generate a random numbers using Naor-Reingold Psedurandom Function`

import java.util.Random;

public class Naor_Reingold

`{`

public static void main(String args[])

`{`

int p=7, l=3, g=2, n=4, x;

int []a = {1,2,2,1};

int []bin = new int[4];

Random random = new Random();

System.out.println("The Random numbers are: ");

for(int i=0; i<10; i++)

`{`

x = random.nextInt(17);

for(int j=3; j>=0; j--)

`{`

bin[j] = x%2;

x/=2;

`}`

int mul = 1;

for(int k=0; k<4; k++)

mul *= Math.pow(a[k], bin[k]);

System.out.println(Math.pow(g, mul));

`}`

`}`

`}`

Output:

$ javac Naor_Reingold.java $ java Naor_Reingold The Random numbers are: 2.0 4.0 2.0 2.0 2.0 16.0 4.0 16.0 16.0 4.0

**Sanfoundry Global Education & Learning Series – 1000 Java Programs.**

Here’s the list of Best Reference Books in Java Programming, Data Structures and Algorithms.