Introduction
I searched the net for ages looking for sample classes & examples
to generate a random number between two values. (Example - between 1 and
100). I wrote a MFC application where riddles are used to check
whether a temporary employee, working the evening shift, is awake. The
entity must respond within a certain time frame to the riddle, otherwise he is
either sleeping or playing Return to Castle Wolfenstein. Sorry! Back to the
problem - The riddles are read in from a text file, but I needed to randomize
the riddles so that every time the application starts a random riddle is
generated.
I developed a very simple class called EasyRandom and can (should) be easily
integrated in your project.
The seed for the pseudo-random number is generated
using the current local system time and date. This means random
numbers generated will always be different, even if the application is scheduled to
start at set intervals in a day.
The sample project I include is just to show you the
workings and how the class file is added to the MFC project.
Using the class
- In the In the sample application, I used a Randomize
button to generate my random numbers, I'll use the
OnRandom
function (called
when the randomize button is pressed) to demonstrate the class usage:
void CTestEasyRandomDlg::OnRandom()
{
CString s;
UpdateData();
m_cRandomBox.ResetContent();
EasyRandom RandomX(m_nLow,m_nHigh);
RandomX.SetTimerSeed();
for (int i = 0; i < m_nAmount; i++)
{
s.Format("%d", RandomX.DrawRandomNumber());
m_cRandomBox.AddString(s);
}
UpdateData(FALSE);
}
-
EasyRandom RandomX(m_nLow, m_nHigh);
This is the general interface to the
EasyRandom
class. This
line creates the object RandomX and passes the Low and High values to the
constructor
-
RandomX.SetTimerSeed();
This
statement sets the random seed for object RandomX. (The seed is generated
using the local system time + date)
-
RandomX.DrawRandomNumber();
Returns
a (one) random number.
Summary
Here is a summary of the public interfaces of the class...
EasyRandom(int a=0, int b=1);
void SetInterval(int a, int b);
int DrawRandomNumber();
void SetTimerSeed();
Recap - 3 easy steps:
- Ceate an
EasyRandom
object - call
SetTimerSeed()
to initialise the "random" seed. - call
DrawRandomNumber()
for output
I am an IT security consultant that focuses mainly in Oracle, Microsoft, Citrix, RSA, SUN, and Linux security. What I do is Perimeter security design (firewalls, IDS etc) as well as internal / external network assessments (penetration).
On the programming side I’m sellable on VC++. I’m also strong using c# (asp.net) TSQL, VC++.Net, STL, COM, ATL, Java/VBscript / Coldfusion /
Home page: http://www.starbal.net