static void RandomGenerator(Args _args)

{ Random Random = new Random();

int myrandomnumber;

;

myrandomnumber=1 + Random.nextInt() MOD 100;

info('Number '+int2str(myrandomnumber));

}

In the above example, Ax will generate a random number in the range from 1 to 100.

Though the random class gives you integer values, you can use it to generate random real values as well.

static void RandomGenerator(Args _args)

{ Random Random = new Random();

real myrandomnumber;

;

myrandomnumber=(1 + Random.nextInt() MOD 1000)/1000;

info('Number '+num2str(myrandomnumber,0,3,1,0));

}

This example generates random numbers in the range 0.001 to 1.000.

The use of this function comes with a warning:

*The chosen numbers are not completely random because a definite mathematical algorithm is used to select them but they are sufficiently random for practical purposes*.

So, good enough to use in an ERP system.

You'd better use System.Random. The Random in AX does not use a seed and always returns the same random numbers

ReplyDeleteTo use a seed you can use the RandomGenerate class.

DeleteFor example:

int i;

int randomNumber;

RandomGenerate randomGenerate;

randomGenerate = RandomGenerate::construct();

randomGenerate.parmSeed(new Random().nextInt());

for (i = 1; i <= 10; i++)

{

randomNumber = RandomGenerate.randomInt(1, 6); // get a random integer between 1 and 6 inclusive

}