[Chicago] Can anyone explain this behavior in Java?

Lewit, Douglas d-lewit at neiu.edu
Mon Mar 23 20:46:13 CET 2015


Oh my god, thank you so much!!!!!!  That was unbelievably simple.  I don't
know why I overlooked such a stupid mistake.  I just deleted that line and
now the output is exactly as it should be.  I was just throwing an extra
line in there, and why???  Oh well..... am I the only programmer who has
these problems?  Sometimes the simplest and easiest bugs are the hardest to
find.  Maybe I was just overthinking the problem.  Oh well.  Thanks for the
help Don.  If I sell my code to a big casino in Las Vegas for a million
dollars, I'll give you a cut since you were so helpful!  And I also owe you
a beer!!!!

Oh wait a moment, the trend now is toward free software and open source.
Well forget about selling my code to that casino in Las Vegas.  They can
get it for free!   ;-)

Thanks for your help.  I just can't believe I overlooked something so
simple!!!!!!  Okay, I feel retarded right now!    :-)

On Mon, Mar 23, 2015 at 12:58 PM, Don Drake <don at drakeconsulting.com> wrote:

>
> I’ll bite.  It’s not a floating point issue (as it normally is), it’s that
> System.out.format does NOT output a new line character, so the two outputs
> appear on the same line.
>
>
>         System.out.format( "\t\tEmpirical Probability: %12.10f",
> probability );
>
>         System.out.print( Probabilities.get(Int) );
>
>
> -Don
>
> --
> Don Drake
> www.drakeconsulting.com
> www.maillaunder.com
> 312-560-1574
> 800-733-2143
>
> On Mar 23, 2015, at 11:42 AM, Philip Doctor <diomedestydeus at gmail.com>
> wrote:
>
> Unless you're doing a lot of repeated math on floats, I wouldn't expect a
> significant precision error here.
>
> hint: I finally looked at the code because this email chain made me
> grumpy, it's not a float error.  It's just a bug in Douglas' code.
>
>
> On Mon, Mar 23, 2015 at 11:16 AM, Garrett Smith <g at rre.tt> wrote:
>
>> You're not seeing a bug - this is expected behavior.
>>
>> http://floating-point-gui.de/
>>
>> http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
>>
>> On Mon, Mar 23, 2015 at 9:59 AM, Lewit, Douglas <d-lewit at neiu.edu> wrote:
>> > Not my left foot or right foot, it's my nose that's itching!   ;-)   I
>> > actually went over my program and printed out the intermediate values
>> > (values BEFORE any computation of the probability).  Interestingly
>> enough,
>> > all the values look just fine, so I'm still scratching my head on this
>> one.
>> > My professor never replied to my email, so this is where I'll have to
>> get a
>> > little aggressive and just corner him in his office during office hours.
>> >
>> > I actually contemplated sending my code to Oracle, but I'm sure I'll
>> get a
>> > reply like, "Do you think this is Homework Central?  Don't bother us
>> with
>> > such trivia!!!"  But hey, why not?  Worst case scenario, they'll just
>> ignore
>> > me.
>> >
>> > The only thing I found on Stack Overflow was something to the effect of
>> > "double division can produce roundoff errors", and that was a segue
>> into the
>> > BigDecimal class.  We'll see.
>> >
>> > In Python, this problem is very simple to do.  In Java, even a simple
>> walk
>> > in the park gets transformed into a Thanksgiving Day parade!
>> >
>> > On Mon, Mar 23, 2015 at 7:43 AM, Jeremy McMillan <
>> jeremy.mcmillan at gmail.com>
>> > wrote:
>> >>
>> >> Doug, don't throw away Java, but do abandon java questions on the
>> Python
>> >> mailing list.
>> >>
>> >> Might we suggest you inquire at an appropriate forum?
>> >>
>> >> Chicago Java Users Group (Chicago, IL) - Meetup
>> >>
>> >>
>> >> Actually, I think your questions might get the best reception from
>> >> http://stackoverflow.com/
>> >>
>> >> Please repost there, and try to restrain your urges to post off topic.
>> I
>> >> want to help, but after not too many empirical trials the probability
>> that I
>> >> will discover something Python related to address in your posts gets
>> >> vanishingly small, and I'm likely to skip them without reading them.
>> That
>> >> would be a waste, because you seem to spend a lot of time making them.
>> Your
>> >> right foot is itching, but you're scratching your left foot.
>> >>
>> >> On Mon, Mar 23, 2015 at 1:49 AM, Lewit, Douglas <d-lewit at neiu.edu>
>> wrote:
>> >>>
>> >>> Hey guys,
>> >>>
>> >>> I'm pretty impressed with Python's dictionary data structure, so I did
>> >>> some research and found out that Java has something equivalent called
>> a
>> >>> "HashMap".  (Is that the same as a hash table or lookup table?  I
>> guess it
>> >>> is.)  I'm also interested in simulating games of chance, so I decided
>> to
>> >>> write a couple programs to simulate the game of rolling four dice.
>> (In
>> >>> statistics textbooks they always talk about rolling two dice, but
>> that gets
>> >>> really boring after a while.  Why not three or four dice, right?)  If
>> you
>> >>> roll four dice and record the sums, the sums can range from 4 (so you
>> rolled
>> >>> all 1's) to 24 (which means you rolled all 6's).  The domain or
>> sample space
>> >>> for this problem thus includes all integers from 4 to 24, inclusive.
>> But
>> >>> then you have to compute the probability values.  I decided to compute
>> >>> empirical probabilities by creating a random object that simulates
>> throwing
>> >>> a die.  Pretty simple, right?
>> >>>
>> >>> I'm attaching two different but very closely related .java files.  In
>> one
>> >>> I just use an array to store the probabilities.  In the other I use
>> the Java
>> >>> version of a dictionary or "HashMap".  Arrays are great, but with an
>> array
>> >>> all the keys are sequentially ordered integers starting at 0.  Well
>> for this
>> >>> problem I don't want to start at 0; I want to start at 4, so it makes
>> more
>> >>> sense to use some type of dictionary, right?
>> >>>
>> >>> Everything compiles and runs just great!  That's not the problem.  The
>> >>> problem is this.  If you look at my program that uses a HashMap,
>> check out
>> >>> the empirical probabilities.  The final digits of the decimal are just
>> >>> screwed up!  For example, let's say that I run my simulation 1,000,000
>> >>> times, and in 1,000,000 throws of four dice I get a sum of 4 775
>> times,
>> >>> okay?  So the probability for rolling a 4 should be 0.000775, right?
>> When I
>> >>> use an array, that's exactly what I get.  But with a HashMap I'm
>> getting
>> >>> 0.0007750000775.  ?????   What the hell is that?  I tried using
>> >>> System.out.printf and System.out.format but they don't work!  I'm
>> really at
>> >>> a loss.  I just don't get it.  It's not a big tragedy and the program
>> still
>> >>> basically works, but I guess I'm disappointed because my first HashMap
>> >>> program has a bug in it!  If anyone can shed light on this bug, hey,
>> then
>> >>> please enlighten me cause I can't figure it out.
>> >>>
>> >>> Take it easy and thanks for the suggestions.
>> >>>
>> >>> Best,
>> >>>
>> >>> Douglas Lewit
>> >>>
>> >>> P.S.  I can just hear someone out there saying, "Doug, throw Java away
>> >>> and just stick with Python!"  While that is extremely tempting, right
>> now
>> >>> that's not an option.  I want to pass my Java course with at least a
>> B!
>> >>> :-)
>> >>>
>> >>>
>> >>> _______________________________________________
>> >>> Chicago mailing list
>> >>> Chicago at python.org
>> >>> https://mail.python.org/mailman/listinfo/chicago
>> >>>
>> >>
>> >>
>> >> _______________________________________________
>> >> Chicago mailing list
>> >> Chicago at python.org
>> >> https://mail.python.org/mailman/listinfo/chicago
>> >>
>> >
>> >
>> > _______________________________________________
>> > Chicago mailing list
>> > Chicago at python.org
>> > https://mail.python.org/mailman/listinfo/chicago
>> >
>> _______________________________________________
>> Chicago mailing list
>> Chicago at python.org
>> https://mail.python.org/mailman/listinfo/chicago
>>
>
> _______________________________________________
> Chicago mailing list
> Chicago at python.org
> https://mail.python.org/mailman/listinfo/chicago
>
>
>
> _______________________________________________
> Chicago mailing list
> Chicago at python.org
> https://mail.python.org/mailman/listinfo/chicago
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/chicago/attachments/20150323/f0924481/attachment.html>


More information about the Chicago mailing list