Hello
I was wondering
how do I randomize a value, I need this to decide random outcomes (obviously) thanks for any help simple code will do me
cheers
stealth
Hello
I was wondering
how do I randomize a value, I need this to decide random outcomes (obviously) thanks for any help simple code will do me
cheers
stealth
You can use the rand() function in cstdlib to get a random number.
It is used like this:
Before calling rand(), you should call srand() to seed the random number generator. You must always use a different number when calling srand(), the current time for instance, or else rand() will always give you the same numbers.Code:int x = rand() % 5; //x would be between 0 and 4
So you might want to do something like this:
Code:#include <cstdlib> #include <ctime> #include <iostream> using namespace std; int RandInt(int a,int b) { return a + rand() % (b - a + 1); } void main() { //Seed rand() with current time srand(unsigned(time(NULL))); //x will be between 2 and 10, inclusive int x = RandInt(2,10); cout<<x; }
There is more information of randomizing in the FAQ.
Making error is human, but for messing things thoroughly it takes a computer
ok thanks for the help guys
cheers
stealth
I've tried doing random numbers using that same method and wanted to do random numbers between 1 and 100.
here are my results
2, 9,12,19,24, ..... etc, etc you get the idea I guess. There always increasing. Not really random. Is there anyway to get around this?
Yea there is you could do this
random{int n ) {
static bool seeded = false; /* used to ensure seeding done just one */
int seed;
if(!seeded) {
cout <<"Enter a value to randomize a value" << endl;
cin>> seed;
cin.ignore(80,'\n');
srand(seed);
seeded = true;
}
* then you call your rand() */
cout <<"Enter a value to randomize a value" << endl;
cin>> seed;
cin.ignore(80,'\n');
srand(seed);
seeded = true;
don't work in a visual C++ Dialog window or what ever you want ever there called. And I don't really want to have to enter a value every time I run it. Is there anyother way to do what I want?
If you want different seeds everytime you could use the current time. So you would do something like this:
#include <time.h>
srand(unsigned(time(NULL)));
Then you will get different numbers from rand() every time without having to specify a seed value.
That just leads back to the same problem in the fifth post. So I might as well assume that there is no way to actually generate random numbers in C++?
This should not happen. Check the rest of your program.I've tried doing random numbers using that same method and wanted to do random numbers between 1 and 100.
here are my results
2, 9,12,19,24, ..... etc, etc you get the idea I guess. There always increasing. Not really random. Is there anyway to get around this?
Maybe you can post the code that lead to these pseudo-random
results.
hth
-nv
She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."
When in doubt, read the FAQ.
Then ask a smart question.
This is all in the frequently asked questions but some of you dont appear to even read that so here goes again....
RANDOM NUMBERS.
To get original random numbers first we have to seed the random number generator. This is commonly done by seeding with the system time. This only has to be done once for every run of your app.
you do it like this...
ok thats the seeding done. Now lets see if we can generate 10 random numbers in the range of 1-100.This requires the use of rand(). This function returns a pseudorandom integer between 0 and RAND_MAX.To cut this range down into something we need (i.e. 1-100) we need to use the modulus operator (%) to bring the number into range. If we say rand()%100 this will give us a random number between 0 and 99. To change this to 1-100 just add 1. So lets put that together in some code.Code:#include<ctime> // or time.h #include<cstdlib> // or stdlib.h using namespace std; // omit this line if using older headers int main() { srand((unsigned)time(NULL)); // this seeds the rand generator. return 0; }
One last thing as you have seen rand() produces ints so if you need a random float/double you can get a random int in the normal way and divide it by RAND_MAX+1.Code:#include<ctime> // or time.h #include<cstdlib> // or stdlib.h #include<iostream> // or iostream.h using namespace std; // omit this line if using older headers int main() { srand((unsigned)time(NULL)); // this seeds the rand generator. int num=0; for (int i=0;i<10;i++) { num=rand()%100+1; cout<<num<<endl; } return 0; }
Free the weed!! Class B to class C is not good enough!!
And the FAQ is here :- http://faq.cprogramming.com/cgi-bin/smartfaq.cgi