digitalmars.D.learn - random number generator
- Michael P. (7/7) Jul 30 2008 Okay. so I'm trying to make a simple Guess the Number game in D, and I n...
- Koroskin Denis (13/22) Jul 30 2008 First, srand() and rand() are C functions and thus are directly availabl...
- Michael P. (6/35) Jul 30 2008 Thanks for fast reply. :P
- Jarrett Billingsley (4/12) Jul 30 2008 You don't have to call rand_seed unless you need a repeatable sequence o...
- Michael P. (2/20) Jul 30 2008 Okay thanks! :D
- Mike Parker (7/8) Jul 30 2008 FYI, the time function doesn't take a 'number'. It takes a pointer to a
Okay. so I'm trying to make a simple Guess the Number game in D, and I need to know how to generate random number. (I'm pretty much done the other parts of the game) In C++, I would seed the random number generator with: srand( time( 0 ) ); and the generate a random number from 1-10 with: randomnumber = ( rand() % 10 ) + 1; How would I go about doing the same thing in D? -Michael P.
Jul 30 2008
On Wed, 30 Jul 2008 23:28:14 +0400, Michael P. <baseball.mjp gmail.com> wrote:Okay. so I'm trying to make a simple Guess the Number game in D, and I need to know how to generate random number. (I'm pretty much done the other parts of the game) In C++, I would seed the random number generator with: srand( time( 0 ) ); and the generate a random number from 1-10 with: randomnumber = ( rand() % 10 ) + 1; How would I go about doing the same thing in D? -Michael P.First, srand() and rand() are C functions and thus are directly available in D. Just import std.c.stdlib or tango.stdc.stdlib. But if you use Tango, you should use tango.math.Random class instead. For example, // this will set random seed and return random value uint randomValue = Random.shared.seed(someSeed /* optional */).next(); or in two steps: Random.shared.seed( someSeed /* optional */ ); uint randomValue = Random.shared.next(); In Phobos, there is std.random module which has void rand_seed(int seed, int index) and uint rand() methods.
Jul 30 2008
Koroskin Denis Wrote:On Wed, 30 Jul 2008 23:28:14 +0400, Michael P. <baseball.mjp gmail.com> wrote:Thanks for fast reply. :P Anyways, I tried importing the std.c.stdlib and the std.c.time to use those exact same functions, but I got errors trying to use time(0) as a argument. Forgot to mention I tried that. So, what would I put as an argument for rand_seed instead of time(0)? Can I just put in any number? Like 0? BTW, don't use Tango. -Michael P.Okay. so I'm trying to make a simple Guess the Number game in D, and I need to know how to generate random number. (I'm pretty much done the other parts of the game) In C++, I would seed the random number generator with: srand( time( 0 ) ); and the generate a random number from 1-10 with: randomnumber = ( rand() % 10 ) + 1; How would I go about doing the same thing in D? -Michael P.First, srand() and rand() are C functions and thus are directly available in D. Just import std.c.stdlib or tango.stdc.stdlib. But if you use Tango, you should use tango.math.Random class instead. For example, // this will set random seed and return random value uint randomValue = Random.shared.seed(someSeed /* optional */).next(); or in two steps: Random.shared.seed( someSeed /* optional */ ); uint randomValue = Random.shared.next(); In Phobos, there is std.random module which has void rand_seed(int seed, int index) and uint rand() methods.
Jul 30 2008
"Michael P." <baseball.mjp gmail.com> wrote in message news:g6qg4m$1kvu$1 digitalmars.com...Thanks for fast reply. :P Anyways, I tried importing the std.c.stdlib and the std.c.time to use those exact same functions, but I got errors trying to use time(0) as a argument. Forgot to mention I tried that. So, what would I put as an argument for rand_seed instead of time(0)? Can I just put in any number? Like 0? BTW, don't use Tango. -Michael P.You don't have to call rand_seed unless you need a repeatable sequence of pseudorandom numbers. Phobos calls it upon program initialization for you.
Jul 30 2008
Jarrett Billingsley Wrote:"Michael P." <baseball.mjp gmail.com> wrote in message news:g6qg4m$1kvu$1 digitalmars.com...Okay thanks! :DThanks for fast reply. :P Anyways, I tried importing the std.c.stdlib and the std.c.time to use those exact same functions, but I got errors trying to use time(0) as a argument. Forgot to mention I tried that. So, what would I put as an argument for rand_seed instead of time(0)? Can I just put in any number? Like 0? BTW, don't use Tango. -Michael P.You don't have to call rand_seed unless you need a repeatable sequence of pseudorandom numbers. Phobos calls it upon program initialization for you.
Jul 30 2008
Michael P. wrote:Anyways, I tried importing the std.c.stdlib and the std.c.time to use those exact same functions, but I got errors trying to use time(0) as a argument. Forgot to mention I tried that.FYI, the time function doesn't take a 'number'. It takes a pointer to a time_t. If the pointer is non-null, the function stores the returned value in the memory to which the argument points. It's common to call the function with a null parameter. In C, 0 is often used in code to represent null. This is not supported in D. So you have to call the function using the null keyword in place of the 0: time(null).
Jul 30 2008