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

13,770

Solution 1

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)

Solution 2

I'm a big fan of R250, being much faster to execute than LCG. http://www.ddj.com/184408549?pgno=7

Shows a significant increase in speed in the old assembly code I used to write back in the day.

Solution 3

Take a look at this Wikipedia page, pick an algorithm, and implement it.

Edit: Or you could take the easy route. Use your OS's C runtime and call their rand functions.

Share:
13,770
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    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?