Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

generate random numbers

0.00/5 (No votes)
30 Jun 2008 1  
Easy way to generate random real (float) or integer numbers
csRandom_source

Introduction

The main idea for this article is how to create random floating numbers in .NET. Before few days i faced problem for generating random real numbers for Stock markets and i searched for a code in CodeProject but i didn't found useful way for this problem.

RandomFloat Class

The RandomFloat class contains properties that allow user to generate random real-integer numbers between specific range and flag to turn on/off real number generator.

Using the code

Turn on or off the real number generator by set the AllowFloating property to true or false, then call the override method NextDouble()

    public class RandomFloat : Random
    {
        protected const int DEFAULT_MIN_VAL = 1;
        protected const int DEFAULT_MAX_VAL = 10;

        protected bool m_bAllowFloat;
        protected int m_iMinVal = DEFAULT_MIN_VAL;
        protected int m_iMaxVal = DEFAULT_MAX_VAL;

        public RandomFloat()
        {
        }

        public RandomFloat(bool bAllowFloat)
        {
            m_bAllowFloat = bAllowFloat;
        }

        public bool AllowFloating
        {
            get
            {
                return m_bAllowFloat;
            }
            set
            {
                m_bAllowFloat = value;
            }
        }

        public int MinRange
        {
            get
            {
                return m_iMinVal;
            }
            set
            {
                m_iMinVal = value;
            }
        }

        public int MaxRange
        {
            get
            {
                return m_iMaxVal;
            }
            set
            {
                m_iMaxVal = value;
            }
        }

        public override double NextDouble()
        {
            int iRnd = Next(m_iMinVal, m_iMaxVal);
            double fRnd = base.NextDouble();

            if (m_bAllowFloat)
            {
                if (iRnd < 0)
                    fRnd = iRnd + (fRnd * -1);
                else
                    fRnd += iRnd;
            }
            else
                fRnd = iRnd;

            if (fRnd > m_iMaxVal)
                fRnd = m_iMaxVal;

            return fRnd;
        }
    }

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