# how do you make random numbers?

Show 80 post(s) from this thread on one page
Page 1 of 2 12 Last
• 11-18-2005
findme
how do you make random numbers?
how do you make random numbers in code like rolling dice?
• 11-18-2005
sunnypalsingh
tryto make use of srand() and rand() functions
• 11-18-2005
findme
whats the difference?
• 11-18-2005
Enahs
• 11-18-2005
7stud
srand() allows you to seed the random number generator rand(). If instead you use the default seed, you will get the same sequence of random numbers everytime you run your program. Typically, you seed rand() with the current time--in the form of the number of milliseconds since 1970. You can do that with the time() function: time(0). #include <cstdlib>, <ctime>.
• 11-18-2005
findme
wow. i learned something new today... thanks a lot!
• 11-18-2005
willc0de4food
you may also be interested in checking this out: http://www.eternallyconfuzzled.com/tuts/random.html
• 11-21-2005
findme
so how do you make a the program pick a random number between 1 trough 8 like and cout both of the die?
• 11-21-2005
7stud
Well that's the tricky part. Here's the easiest way:
Code:

```#include<iostream> #include<vector> #include<algorithm> //random_shuffle() #include<ctime> //time() using namespace std; int main() {         //A vector is just like an array.         //You declare one by using the word "vector"         //and putting the type of the elements it will         //contain between angled brackets.  Then give it a         //name and a size:         vector<int> myNums(8);                 //Put the numbers 1-8 in the vector:         for(int i = 0; i < 8; i++)         {                 myNums[i] = i + 1;         }                 //Seed the random number generator:         srand(time(0));       //Shuffle the vector between the elements specified:         random_shuffle(myNums.begin(), myNums.end());         //Display the first two values in the shuffled vector:         cout<<"You rolled a "<<myNums[0]<<" and a "<<myNums[1]<<endl;                         return 0; }```
• 11-21-2005
willc0de4food
Quote:

pick a random number between 1 trough 8
why would you want a number 1 through 8? lol the numbers on a die are 1 through 6..?
• 11-21-2005
Prelude
>lol the numbers on a die are 1 through 6..?
Clearly the words spoken by someone who hasn't played D&D ;)
• 11-21-2005
willc0de4food
Quote:

Originally Posted by Prelude
>lol the numbers on a die are 1 through 6..?
Clearly the words spoken by someone who hasn't played D&D ;)

truu truu. my mom wouldn't let me even tho my uncles would have loved it. she was basically anti-anything_that_had_magic, lol..
• 11-21-2005
Daved
7stud, your way doesn't match the scenario of rolling two dice. If you have two dice, you are allowed to have both dice give the same result. Using random_shuffle is more appropriate for doing a card game where each card is dealt and you cannot deal duplicate cards.

To simulate rolling two dice, just use rand() twice. The easiest way to do this is (rand() % 8 + 1), once for each die.
• 11-21-2005
7stud
Quote:

7stud, your way doesn't match the scenario of rolling two dice. If you have two dice, you are allowed to have both dice give the same result.
Good point.

Quote:

The easiest way to do this is (rand() % 8 + 1), once for each die.
That can reduce the randomness because the modulus operator throws out the high order bits and just uses the low order bits. For more information, see Prelude's faq:

http://faq.cprogramming.com/cgi-bin/...&id=1073086407

Once you get into all those issues, it gets complicated real fast. I think it's conceptually simpler to modify the code I posted to read a number out of the shuffled vector, then shuffle again and read another number. But, ultimately that's up to findme to decide.
• 11-21-2005
Daved
I don't understand how shuffling the entire vector twice would be conceptually simpler than just picking a random number from 1 to 8.

I doubt the low vs high order bits issue will have much of an impact if you're looking for the easiest method.
Show 80 post(s) from this thread on one page
Page 1 of 2 12 Last