using System; using System.Runtime.InteropServices; using System.Text; using NagLibrary; public class NagG05Functions { public static void Main() { int n = 5; double lambda = 2.7; int lr = 30 + (int)(20 * Math.Sqrt(lambda) + lambda); double[] r = new double[lr]; int[] x = new int[n]; nag_declarations.Nag_ModeRNG mode = nag_declarations.Nag_ModeRNG.Nag_InitializeAndGenerate; nag_declarations.Nag_BaseRNG genid = nag_declarations.Nag_BaseRNG.Nag_Basic; int subid = 0, lseed = 1, lstate; int[] seed = { 1762543 }; nag_declarations.NagError fail = new nag_declarations.NagError(); fail.message = new byte[512]; Encoding enc = Encoding.ASCII; /* nag_rand_init_repeatable (g05kfc). * Get the length of the state array */ int[] dummy = new int[1]; lstate = -1; nag_declarations.nag_rand_init_repeatable(genid, subid, seed, lseed, dummy, ref lstate, ref fail); if (fail.code != 0) { Console.WriteLine("Error from nag_rand_init_repeatable (g05kfc):"); Console.WriteLine(enc.GetString(fail.message)); Environment.Exit(fail.code); } int[] state = new int[lstate]; /* nag_rand_init_repeatable (g05kfc). * Initialise the generator to a repeatable sequence */ nag_declarations.nag_rand_init_repeatable(genid, subid, seed, lseed, state, ref lstate, ref fail); if (fail.code != 0) { Console.WriteLine("Error from nag_rand_init_repeatable (g05kfc):"); Console.WriteLine(enc.GetString(fail.message)); Environment.Exit(fail.code); } /* nag_rand_poisson (g05tjc). * Generate the variates, initialising the reference vector at the same time */ nag_declarations.nag_rand_poisson(mode, n, lambda, r, lr, state, x, ref fail); if (fail.code != 0) { Console.WriteLine("Error from nag_rand_poisson (g05tjc):"); Console.WriteLine(enc.GetString(fail.message)); Environment.Exit(fail.code); } for (int i = 0; i < n; i++) { Console.WriteLine("{0}", x[i]); } } }