# Thread: how do you make random numbers?

1. ## how do you make random numbers?

how do you make random numbers in code like rolling dice?

2. tryto make use of srand() and rand() functions

3. whats the difference?

4. 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>.

5. wow. i learned something new today... thanks a lot!

6. you may also be interested in checking this out: http://www.eternallyconfuzzled.com/tuts/random.html

7. so how do you make a the program pick a random number between 1 trough 8 like and cout both of the die?

8. 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;
}```

9. 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..?

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

11. 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..

12. 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.

13. 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.

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.

14. 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.