Click here to Skip to main content
Click here to Skip to main content

Simple Random Class (EasyRandom)

, 4 Jun 2002
Rate this:
Please Sign up or sign in to vote.
A simple class to use in your MFC project to generate random numbers within an interval.
<!-- Download Links --> <!-- Article image -->

Sample Image - EasyRandom.jpg

<!-- Add the rest of your HTML here -->

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 file view, add the EasyRand.cpp file to your project.
  • Still in file view, double-click on <YourProject>Dlg.cpp and add the following code segment in the declaration section: (in BOLD)
    #include "stdafx.h"
    #include "EasyRand.h"
  • 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...

// default conmstructor with defaults of 0 & 1
EasyRandom(int a=0, int b=1);

// Mutator:
// Sets high and low values
void SetInterval(int a, int b);

// Faclitators:
// Display Random numbers...
int DrawRandomNumber();
	
// Set seed using current time
void SetTimerSeed();

Recap - 3 easy steps:

  1. Ceate an EasyRandom object
  2. call SetTimerSeed() to initialise the "random" seed.
  3. call DrawRandomNumber() for output

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

nums
Web Developer
South Africa South Africa
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

Comments and Discussions

 
GeneralCStdLib rand() PinmemberDarek Nawrocki9-Sep-06 10:08 
GeneralRe: CStdLib rand() PinmemberDarek Nawrocki9-Sep-06 10:10 
GeneralRe: CStdLib rand() Pinmembernums11-Sep-06 7:56 
Generalcould just put in a function like this .. PinmemberBill Gates Antimatter Particle23-Aug-02 2:11 
GeneralRe: could just put in a function like this .. PinmemberTim Smith23-Aug-02 2:59 
GeneralPoor random number generator PinmemberPhilippe Lhoste11-Jun-02 3:35 
GeneralRe: Poor random number generator Pinmembernums11-Jun-02 4:39 
GeneralRe: Poor random number generator PinmemberPhilippe Lhoste11-Jun-02 4:59 
GeneralRe: Poor random number generator PinmemberTim Smith23-Aug-02 3:01 
GeneralRPG dice PinmemberSunKnight5-Jun-02 16:37 
GeneralSleeping Employees Pinmemberkevnar5-Jun-02 8:02 
GeneralRe: Sleeping Employees Pinmembernums5-Jun-02 22:06 
GeneralRe: Sleeping Employees Pinmemberkevnar6-Jun-02 7:10 
GeneralRe: Sleeping Employees Pinmembernums11-Jun-02 4:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.141223.1 | Last Updated 5 Jun 2002
Article Copyright 2002 by nums
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid