[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