How do you generate a random number in Assembly language using the FASM compiler?

Sam152 picture Sam152 · Jan 26, 2009 · Viewed 13.7k times · Source

I am really new to assembly and I'm trying to create a simple program. For this I need to generate a random number.

Anybody know how I can do this with the FASM compiler?

Answer

Tony Peterson picture Tony Peterson · Jan 26, 2009

You could use a Linear-Congruential Algorithm. Its the most common psuedo-random number algorithm.

Basically, you have a seed value. And then once you start generating random numbers each number becomes the seed for the new request.

The numbers are generated by

x = (a * s + b) MOD m

Where m, a and b are picked for the algorithm. There are some popular sets of these values used. Its a lot easier if you make m a power of 2, especially 2^32 for 32 bit machines. Then the mod step is done automatically by the machine.

Check out the wikipedia, they have popular sets of a, b and M and a lot more information.

There are more complicated things can be done with seeds as well (setting the seed based on the current time, for instance)