Thread: quick question on random #'s

  1. #1
    Registered User
    Join Date
    Apr 2005

    quick question on random #'s

    well im not completely sure how this assigns the variable first_die a random number from 1 - 6..

    const int x = 1;
    const int y = 6;
    int main()
    time_t seconds;
    srand((unsigned int) seconds);
    int first_die = rand() % (y - x + 1) + x;
    cout << first_die;
    return 0;
    I understand that x gets a constant value of 1 and y gets a constant value of 6... but why does the higher value get - from the lower value + 1 and all of it + lower value. I dont know... im a bit confused =P

    o yea, im not really positive with modulus as well....
    Last edited by Tsukasa; 05-06-2005 at 09:11 PM.

  2. #2
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    rand() % 6 returns an integer between 0 and 5, inclusive.
    Since you want the range to be 1 to 6 inclusive, you add 1 (i.e. x).
    If you wanted the range to be 2 to 7 inclusive, you add 2.
    But then x would be 2, and y would be 7, yet the size of the range (y - x + 1 = 7 - 2 + 1 = 6) remains the same.
    Quote Originally Posted by Bjarne Stroustrup (2000-10-14)
    I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.
    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  3. #3
    Join Date
    Aug 2002
    Tucson, Arizona
    Here is some good stuff on random numbers

  4. #4
    Registered User
    Join Date
    Apr 2005
    ok, another question...

    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    using std::cout;
    using std::cin;
    using std::endl;
    unsigned const int high = 500000;
    unsigned const int low = 100000;
    int main(){
        time_t seconds;
        srand((unsigned int)seconds);
        for (int x;;x++){
            cout << rand() % (high - low + 100000) + low << endl;
        return 0;
    can you explained to me srand()...

  5. #5
    Cat without Hat CornedBee's Avatar
    Join Date
    Apr 2003
    rand does not really generate random numbers. It generates so-called pseudo-random numbers. Those are a really long sequence of numbers, but eventually they repeat.
    The problem is that on each program run, the sequence starts at the same place, so the results of your program would be the same every time. That's why it's possible to seed the generator, i.e. to set it to a specific starting position in the sequence. srand does just that.
    The generator is usually seeded with some timestamp. This ensures that your program, if run at different times, gives different results.
    All the buzzt!

    "There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code."
    - Flon's Law

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. quick noob question
    By thanatos1 in forum C# Programming
    Replies: 2
    Last Post: 06-17-2009, 08:28 PM
  2. quick question (adding characters)
    By Cactus in forum C Programming
    Replies: 2
    Last Post: 09-24-2005, 03:54 PM
  3. Another brain block... Random Numbers
    By DanFraser in forum C# Programming
    Replies: 2
    Last Post: 01-23-2005, 04:51 PM
  4. very quick question.
    By Unregistered in forum C++ Programming
    Replies: 7
    Last Post: 07-24-2002, 03:48 AM
  5. Quick question: exit();
    By Cheeze-It in forum C Programming
    Replies: 6
    Last Post: 08-15-2001, 05:46 PM
Website Security Test