I am trying to use drand48() with a .6 probability of getting a 1. How can I do this?
This is a discussion on drand48() Probability within the C Programming forums, part of the General Programming Boards category; I am trying to use drand48() with a .6 probability of getting a 1. How can I do this?...
I am trying to use drand48() with a .6 probability of getting a 1. How can I do this?
So, you want a distorted distribution, where you have 60% chance of 1.0, and 40% chance of 0 to "just under 1"? How do you want the second part of the distribution to be formed?
If you want the 40% portion to be linear, perhaps this would work:
--Code:double myrand() { double x; x = drand48(); if (x >= 0.6) x = 1; else x = x / 0.6; /* Extend the range to 0..0.999999 */ }
Mats
Compilers can produce warnings - make the compiler programmers happy: Use them!
Please don't PM me for help - and no, I don't do help over instant messengers.
That's a bit like asking for a 5-letter word containing an 'E'.
What kind of distribution are you after, and what are the minimum and maximum values of the resulting random numbers?
Are you just wanting a one or a zero? Something like this perhaps?:
return drand48() >= 0.4 ? 1 : 0;
My homepage
Advice: Take only as directed - If symptoms persist, please see your debugger
Linus Torvalds: "But it clearly is the only right way. The fact that everybody else does it some other way only means that they are wrong"
i am sorry if this is off topic, but i am curious.
Is this "drand48()" function ANSI C89?
Code:# define EVERYTHINK 0 int main ( void ) { while ( C_learning ) english_learning ( ); return EVERYTHINK; }
I don't think so.
I am looking to have 60% chance of getting a 1 and 40% chance of getting a 0.
It is non-standard with respect to C.Is this "drand48()" function ANSI C89?
I think you can use iMalc's suggestion.I am looking to have 60% chance of getting a 1 and 40% chance of getting a 0.
Look up a C++ Reference and learn How To Ask Questions The Smart WayOriginally Posted by Bjarne Stroustrup (2000-10-14)
Thanks for the replies. I am also supposed to use srand48() to nitialize The random number stream with a seed of 9. I'm a little confused here. Somebody explain this?
I am not sure, but ... srand48(9) might be the answer.
A typical example of ...cheap programming practices.Code:... goto johny_walker_red_label; johny_walker_blue_label: exit(-149$); johny_walker_red_label : exit( -22$);
So call
That will guarantee that the random numbers are always the same every time.Code:srand48(9L);
--
Mats
Compilers can produce warnings - make the compiler programmers happy: Use them!
Please don't PM me for help - and no, I don't do help over instant messengers.
but how do I use srand()48 with drand48(). I'm confused.
Just like srand() with rand() in standard C, srand48() just sets the "seed" value for the random number generator. Fixing the seed value means that the random number generator gives the same values every time you run the program. So, as mentioned above in multiple places, pass the seed as a parameter with srand48() once at the very beginning of the program.