From: | Cosmin M. |
Sent on: | Friday, January 25, 2013, 5:25 PM |
yeah, before i was wrong, this is really right!
On 01/25/[masked]:04 PM, Cosmin Marginean wrote:
This message was sent by Emanuele Tagliaferri ([address removed]) from LJC - London Java Community.Right...
private static long generateRandom(long min, long max) {double rnd = Math.random();if (min < 0 && max > 0) {return min + (long) (Math.abs(min - (min/Long.MIN_VALUE)) * rnd) + (long) (max * rnd);} else {return min + (long) (Math.abs(max + 1 - min) * Math.random());}}
On Fri, Jan 25, 2013 at 4:31 PM, Wesley Hall <[address removed]> wrote:
Oh sorry...
Sivaji,
Nice! Actually I started writing this because I wasn't able to find a
solution out there in the open source world. I will have a look at the
code for the commons math stuff tonight to see how they approached it.
On Fri, Jan 25, 2013 at 4:13 PM, Wesley Hall <[address removed]> wrote:
> Wow, loving the volume of responses :).
>
> Just one request, it would be helpful to me if people can keep the
> subject line consistent, this keeps gmail thread organisation working
> and is helpful for my sanity.
>
> Some comments for various people:
>
> Sam,
>
> I am not too worried about efficiency or the distribution of
> java.util.Random itself. This is not going to be used in highly
> contended code. The solution you provide suffers from some problems,
> test it with values like Long.MIN_VALUE and Long.MAX_VALUE as the
> parameters and -1 to MAX etc. You will see some strange behaviour.
>
> Cosmin,
>
> I looked at your solution and it looked like it was just mathematical
> enough to work, alas... MIN_VALUE and MAX_VALUE provides the same
> result on every call, so something is certainly wrong ;).
>
> Jahan,
>
> Try the above types of parameters as well, you may well find that you
> have a problem ;).
>
> Stuart,
>
> You might win actually :). The stuff after the BigInteger stuff
> (which, *spoiler* is pretty much what I did), looks like it should
> have distribution problems. Especially with the way that you do that
> 'correct' thing and push everything between the bounds. That just
> looks to me like you will end up with a disproportionate numbers at
> the boundaries but I did a very quick distribution test and this
> didn't seem to be happening. I will look a little more tonight. My
> solution is a bit different but yours might well be better.... watch
> this space :).
>
> Wes
>
> On Fri, Jan 25, 2013 at 10:56 AM, Wesley Hall <[address removed]> wrote:
>> Hello folks,
>>
>> I came across what turned out to be a pretty interesting problem on a
>> project of mine last night, and I thought I would share it with you
>> guys. I am interested to see if anyone can come up with a better
>> solution than I did (highly likely I suspect :)).
>>
>> Your mission, should you choose to accept it, is to write a method, in
>> Java, with the following signature...
>>
>> public static long generateRandom(long min, long max) {
>> // code here
>> }
>>
>> Such that the method generates a random long value that is between the
>> two parameters provided (inclusive). The only restriction on the
>> parameters is that max >= min, for brevity you can assume this is
>> ensured outside of the method and that you don't need to check inside.
>>
>> The first person to provide a working solution gets to look like a
>> hero... and if you provide a solution that I think is better than the
>> one I have, then I will (with your permission), use this version in
>> the library that I am about to open source and give you contributor
>> credit.
>>
>> GO....
>>
>> Wes
--
Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
http://www.meetup.com/Londonjavacommunity/
This message was sent by Wesley Hall ([address removed]) from LJC - London Java Community.
To learn more about Wesley Hall, visit his/her member profile: http://www.meetup.com/Londonjavacommunity/members/15396461/
Set my mailing list to email me
As they are sent
http://www.meetup.com/Londonjavacommunity/list_prefs/?pref=1
In one daily email
http://www.meetup.com/Londonjavacommunity/list_prefs/?pref=2
Don't send me mailing list messages
http://www.meetup.com/Londonjavacommunity/list_prefs/?pref=0
Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]
--
Cosmin Marginean
--
Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
This message was sent by Cosmin Marginean ([address removed]) from LJC - London Java Community.
To learn more about Cosmin Marginean, visit his/her member profile
Set my mailing list to email me As they are sent | In one daily email | Don't send me mailing list messages
Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]
--
Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
To learn more about Emanuele Tagliaferri, visit his/her member profile
Set my mailing list to email me As they are sent | In one daily email | Don't send me mailing list messages
Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]