Hi, im fairly new to C++ and would like help with using random number generators, i have heard of them but cant seem to find there code structure.

Any help is greatly appreciated :D

0

http://www.agner.org/random/randomc.zip

download that zip of .cpp files

File list

randomc.h

C++ header file containing class definitions.

You must #include this in all C++ files that use this library.

mersenne.cpp

Random number generator of type Mersenne twister.

ranrotb.cpp

Random number generator of type RANROT-B.

ranrotw.cpp

Random number generator of type RANROT-W.

mother.cpp

Random number generator of type Mother-of-all (multiply with carry).

rancombi.cpp

Template class for combining any two of these random number generators.

ex-ran.cpp

Example showing how to use these random number generators.

That should help alot in understanding the generators. Be aware that not all generators work with all platforms as c++ is multiplatform the generators will behave differently depending on those conditions.

If you do a google on the generator names you should find which are platform specific.

RANROT-W will work for windows as a starter though. Have fun learning ! :D

0

Your C++ compiler comes with a random number generator, rand(). There's a tutorial on the site here:

[thread]1769[/thread]

If you're producing a serious application you'll want something a little more sophisticated but for many purposes it's adequate.

0

Well producing a random number is very simple. Before you use the random number:

1. include time.h.

2. just put randomize() at the beginning of code.

3. Then use random() or if you want a range of random number, for e.g out of 4 to 20 you want one, declare

random(20-4+1)+4;

random(n) returns numbers from 0 to n-1, hence 1 was added, so as general:

random(upper limit-lower limit +1) + lower;

Since random returns int, you have to store it in int variable.

I hope that much would make it clear. And I know that you really do not need too complicated random functions at this moment, for if it is,lol, dont ask me, i dont know. These are enough.

0

Hi Matthew,

below is a piece of code showing a pseudo random generator based on the linear congruential method by Lehmer to generating uniformly distributed random numbers over 0 ... s - 1. Random generators implemented in today programming languages are usually based on this method. Sure, they might be better and faster then mine, but lehmer is a complete random generator what also has rather good statistical properties. Its period is 2147483646.

```
unsigned long int lehmer(long int s)
// linear congruential pseudo random number generator based on D. Lehmer
{ static unsigned long long a = 2007, b = 4194301, c = 2147483647, z = b;
if ( s < 0 ) {s = -s; a = s;}
z = (a + b * z) % c;
return z % s;
}
```

If you call lehmer with s > 0, the random number is drawn from interval 0...s-1. Every time you start it with same s it produces the same sequence of random numbers, what is favorable when doing physical experiments. For game programming it s better to start it with s < 0 to initialize lehmer to produce various sequences. So s < 0 is kind of random seed.

Hope this will help you to understand how random generators work.

Theory of random generators can be found in D. Knuth: The Art of Computer Programming. One of the best set of random generators ever written is Mersenne Twister MTrand.

krs,

tesu

:'( oops sorry, now i got it: This thread was posted in 2003 ! Well, never mind ...

This topic has been dead for over six months. Start a new discussion instead.

Recommended Topics

For some reason the make_great function is not affecting the output of the show_magicians function. I'm trying to alter the list but it's not working.

`# the make_great function is ...`

Please help me about MenuStrip Control used.

I create a project there one parents form and two child form

MenuStripControl-1 is on parents form (main_form)

Menu Item name a) ...