Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Java question: Need some sort of global variable.

  1. Apr 26, 2013 #1
    Just wondering if the Java experts here could help me. As part of a project I'm making a function rand9() that returns a pseudo-random number 0 through 9. The problem is that each time it's called I need a certain number to increment so that it can generate a new (not necessarily different) random number next time it's called. Hope that makes sense. Just wondering how to approach this. I've checked out http://www.glenmccl.com/tip_002.htm, but I'm not sure how to how to implement that because, at least with JGrasp, I can only have 1 class in a file.
     
    Last edited: Apr 26, 2013
  2. jcsd
  3. Apr 26, 2013 #2
    By the way, I just ran a simulation (using C++ since I suck at Java) and it looks like my random number distributor is pretty uniform.

    TOTAL:
    # of 0's: 226
    # of 1's: 232
    # of 2's: 208
    # of 3's: 247
    # of 4's: 230
    # of 5's: 227
    # of 6's: 240
    # of 7's: 208
    # of 8's: 226
    # of 9's: 216


    EDIT:

    Dang it! There's a little repetition. I noticed that a 0 is appearing every 50th character eventually in the output. My formula for the nth number is f(n) = (n * ∏(n)) mod 10.

    5, 8, 5, 8, 9, 2, 7, 0, 1, 4, 3, 2, 5, 8, 3, 8, 3, 0, 3, 8, 9, 6, 5, 6, 1, 6, 1, 0, 7, 2, 1, 6, 5, 6, 9, 4, 3, 0, 9, 2, 3, 2, 5, 4, 7, 4, 3, 0, 3, 8, 3, 4, 5, 8, 3, 8, 3, 0, 3, 6, 1, 4, 5, 2, 7, 6, 3, 0, 3, 8, 1, 2, 5, 8, 3, 6, 9, 0, 9, 2, 3, 2, 5, 8, 3, 6, 9, 0, 7, 8, 1, 4, 5, 8, 3, 8, 7, 0, 7, 4, 9, 6, 5, 2, 9, 4, 1, 0, 7, 6, 1, 6, 5, 6, 1, 6, 7, 0, 1, 6, 1, 2, 5, 6, 3, 2, 3, 0, 9, 6, 3, 8, 5, 4, 1, 6, 3, 0, 1, 2, 9, 8, 5, 4, 1, 6, 1, 0, 7, 2, 9, 8, 5, 6, 3, 2, 3, 0, 7, 6, 1, 4, 5, 8, 7, 6, 1, 0, 9, 2, 3, 2, 5, 4, 7, 8, 7, 0, 7, 2, 9, 8, 5, 4, 9, 4, 1, 0, 3, 6, 3, 4, 5, 8, 7, 4, 3, 0, 9, 2, 1, 6, 5, 2, 3, 4, 1, 0, 7, 2, 9, 8, 5, 6, 9, 8, 3, 0, 1, 8, 7, 2, 5, 4, 1, 2, 3, 0, 3, 8, 3, 4, 5, 2, 3, 4, 1, 0, 3, 2, 9, 6, 5, 4, 9, 8, 1, 0, 7, 2, 1, 6, 5, 4, 7, 6, 3, 0, 3, 4, 7, 2, 5, 4, 3, 8, 7, 0, 1, 4, 9, 6, 5, 8, 9, 2, 9, 0, 3, 2, 1, 4, 5, 6, 1, 6, 1, 0, 1, 4, 9, 4, 5, 4, 7, 4, 1, 0, 3, 4, 7, 2, 5, 2, 9, 2, 1, 0, 3, 8, 3, 2, 5, 4, 3, 8, 7, 0, 1, 4, 3, 2, 5, 6, 3, 4, 3, 0, 1, 4, 7, 2, 5, 2, 3, 4, 9, 0, 3, 4, 7, 4, 5, 4, 7, 6, 9, 0, 1, 4, 3, 2, 5, 8, 3, 8, 3, 0, 7, 2, 1, 6, 5, 8, 9, 4, 9, 0, 9, 6, 7, 4, 5, 4, 7, 4, 1, 0, 1, 6, 1, 8, 5, 8, 7, 6, 7, 0, 9, 6, 7, 8, 5, 8, 3, 2, 9, 0, 9, 6, 1, 8, 5, 6, 9, 8, 7, 0, 3, 4, 9, 4, 5, 6, 3, 6, 3, 0, 9, 4, 1, 6, 5, 2, 1, 2, 9, 0, 1, 2, 7, 2, 5, 6, 3, 8, 3, 0, 3, 8, 7, 6, 5, 2, 1, 6, 1, 0, 7, 2, 9, 6, 5, 6, 3, 8, 7, 0, 9, 2, 7, 4, 5, 8, 3, 4, 1, 0, 3, 4, 7, 4, 5, 8, 3, 8, 3, 0, 3, 8, 1, 4, 5, 2, 3, 8, 1, 0, 7, 4, 7, 2, 5, 6, 9, 6, 1, 0, 1, 6, 9, 8, 5, 2, 1, 8, 3, 0, 9, 2, 9, 8, 5, 2, 7, 2, 1, 0, 3, 8, 3, 8, 5, 4, 1, 6, 7, 0, 3, 6, 1, 4, 5, 8, 9, 8, 1, 0, 1, 4, 7, 2, 5, 6, 1, 6, 3, 0, 1, 6, 1, 2, 5, 6, 9, 2, 9, 0, 3, 8, 3, 2, 5, 6, 9, 2, 7, 0, 3, 4, 7, 8, 5, 6, 9, 2, 1, 0, 1, 6, 9, 6, 5, 6, 1, 4, 1, 0, 7, 4, 7, 6, 5, 8, 1, 8, 3, 0, 1, 6, 3, 8, 5, 2, 1, 8, 7, 0, 7, 6, 1, 6, 5, 2, 3, 8, 3, 0, 1, 4, 9, 4, 5, 4, 1, 2, 9, 0, 3, 6, 7, 4, 5, 6, 1, 2, 7, 0, 9, 6, 1, 6, 5, 4, 7, 4, 3, 0, 1, 2, 1, 6, 5, 4, 3, 8, 7, 0, 3, 2, 1, 8, 5, 8, 9, 4, 1, 0, 9, 2, 3, 2, 5, 6, 3, 6, 9, 0, 9, 2, 1, 2, 5, 2, 1, 6, 9, 0, 9, 4, 7, 8, 5, 8, 9, 8, 7, 0, 1, 4, 9, 6, 5, 8, 9, 8, 9, 0, 3, 8, 1, 2, 5, 4, 7, 6, 9, 0, 9, 2, 1, 6, 5, 6, 1, 6, 1, 0, 7, 2, 1, 2, 5, 8, 7, 8, 7, 0, 1, 4, 3, 2, 5, 4, 3, 4, 1, 0, 1, 2, 1, 8, 5, 8, 3, 2, 7, 0, 1, 4, 9, 4, 5, 4, 1, 2, 9, 0, 1, 4, 7, 6, 5, 2, 1, 4, 3, 0, 3, 2, 1, 8, 5, 4, 9, 4, 3, 0, 7, 6, 7, 6, 5, 6, 1, 8, 9, 0, 3, 2, 9, 2, 5, 4, 1, 8, 3, 0, 9, 4, 1, 2, 5, 6, 9, 6, 1, 0, 1, 4, 9, 6, 5, 8, 1, 2, 9, 0, 3, 8, 7, 8, 5, 2, 3, 8, 1, 0, 1, 2, 3, 6, 5, 6, 1, 4, 1, 0, 7, 2, 7, 8, 5, 2, 1, 2, 9, 0, 9, 8, 3, 4, 5, 4, 3, 4, 3, 0, 3, 8, 3, 4, 5, 8, 1, 6, 1, 0, 1, 4, 9, 6, 5, 8, 3, 6, 9, 0, 7, 8, 7, 4, 5, 6, 9, 4, 9, 0, 1, 6, 7, 8, 5, 8, 9, 2, 1, 0, 9, 2, 1, 6, 5, 4, 9, 6, 7, 0, 1, 6, 7, 6, 5, 8, 9, 4, 7, 0, 7, 8, 3, 4, 5, 4, 7, 2, 7, 0, 7, 6, 3, 8, 5, 2, 7, 6, 1, 0, 7, 4, 9, 6, 5, 6, 9, 2, 1, 0, 3, 4, 9, 6, 5, 8, 9, 8, 1, 0, 9, 8, 9, 4, 5, 6, 3, 4, 3, 0, 7, 2, 9, 8, 5, 4, 1, 6, 7, 0, 1, 6, 1, 2, 5, 4, 1, 8, 3, 0, 7, 6, 1, 6, 5, 8, 1, 2, 9, 0, 9, 6, 7, 6, 5, 2, 3, 4, 9, 0, 7, 6, 1, 4, 5, 6, 3, 8, 1, 0, 1, 2, 9, 8, 5, 8, 3, 4, 3, 0, 3, 4, 3, 8, 5, 8, 1, 2, 3, 0, 9, 8, 9, 6, 5, 8, 9, 8, 3, 0, 3, 2, 1, 8, 5, 8, 1, 4, 9, 0, 9, 8, 9, 8, 5, 6, 9, 4, 1, 0, 1, 8, 9, 6, 5, 8, 3, 8, 3, 0, 7, 6, 3, 6, 5, 8, 9, 2, 9, 0, 7, 8, 7, 4, 5, 2, 9, 4, 7, 0, 3, 2, 3, 2, 5, 6, 3, 8, 3, 0, 3, 8, 3, 2, 5, 4, 9, 8, 7, 0, 7, 6, 1, 4, 5, 6, 1, 8, 3, 0, 3, 8, 3, 8, 5, 6, 9, 6, 9, 0, 3, 2, 7, 2, 5, 6, 1, 2, 9, 0, 1, 4, 9, 2, 5, 6, 7, 4, 3, 0, 1, 6, 1, 2, 5, 6, 9, 8, 9, 0, 9, 4, 3, 8, 5, 8, 3, 4, 1, 0, 3, 8, 3, 8, 5, 4, 9, 2, 9, 0, 9, 6, 7, 8, 5, 6, 9, 8, 7, 0, 7, 8, 9, 6, 5, 2, 3, 8, 7, 0, 1, 4, 9, 6, 5, 6, 3, 6, 7, 0, 9, 4, 7, 4, 5, 4, 3, 8, 7, 0, 3, 2, 9, 6, 5, 6, 3, 4, 1, 0, 1, 6, 3, 2, 5, 2, 1, 2, 3, 0, 3, 8, 3, 2, 5, 6, 7, 4, 3, 0, 7, 8, 3, 6, 5, 4, 1, 4, 3, 0, 3, 4, 1, 6, 5, 8, 3, 8, 1, 0, 9, 4, 3, 8, 5, 2, 7, 2, 9, 0, 3, 4, 1, 4, 5, 6, 1, 2, 7, 0, 3, 2, 3, 6, 5, 6, 9, 6, 7, 0, 1, 4, 9, 6, 5, 8, 3, 6, 1, 0, 7, 6, 7, 8, 5, 8, 9, 6, 3, 0, 9, 2, 9, 8, 5, 8, 9, 2, 9, 0, 9, 2, 3, 2, 5, 2, 1, 2, 7, 0, 7, 2, 9, 6, 5, 4, 7, 6, 9, 0, 1, 6, 7, 2, 5, 4, 7, 4, 3, 0, 7, 4, 3, 2, 5, 6, 9, 4, 1, 0, 9, 2, 7, 8, 5, 2, 9, 8, 7, 0, 7, 2, 7, 6, 5, 2, 3, 8, 7, 0, 9, 6, 7, 4, 5, 8, 7, 6, 9, 0, 9, 6, 1, 8, 5, 8, 3, 4, 3, 0, 9, 2, 9, 6, 5, 6, 7, 6, 3, 0, 7, 2, 9, 6, 5, 8, 9, 8, 3, 0, 3, 8, 9, 6, 5, 6, 1, 6, 7, 0, 7, 8, 3, 4, 5, 8, 3, 6, 9, 0, 1, 6, 7, 2, 5, 8, 9, 2, 9, 0, 9, 6, 3, 2, 5, 6, 9, 4, 1, 0, 1, 4, 9, 4, 5, 2, 3, 8, 3, 0, 9, 4, 9, 6, 5, 6, 1, 2, 3, 0, 7, 6, 7, 4, 5, 2, 1, 4, 9, 0, 3, 4, 9, 4, 5, 4, 3, 8, 7, 0, 1, 6, 7, 2, 5, 2, 7, 6, 1, 0, 1, 6, 7, 8, 5, 4, 1, 8, 7, 0, 9, 6, 1, 2, 5, 8, 1, 2, 7, 0, 1, 4, 1, 4, 5, 8, 7, 6, 7, 0, 7, 8, 7, 4, 5, 4, 9, 8, 3, 0, 3, 4, 3, 8, 5, 2, 7, 6, 1, 0, 7, 2, 3, 4, 5, 8, 3, 6, 3, 0, 3, 6, 1, 2, 5, 2, 7, 6, 7, 0, 7, 6, 7, 6, 5, 6, 9, 8, 7, 0, 9, 2, 3, 2, 5, 6, 9, 2, 7, 0, 9, 8, 1, 6, 5, 6, 3, 4, 3, 0, 3, 2, 9, 8, 5, 6, 7, 4, 7, 0, 7, 8, 7, 4, 5, 8, 7, 6, 9, 0, 3, 4, 1, 2, 5, 8, 3, 4, 3, 0, 7, 2, 9, 6, 5, 6, 1, 4, 9, 0, 7, 2, 1, 6, 5, 4, 7, 6, 9, 0, 3, 2, 1, 8, 5, 6, 3, 2, 7, 0, 3, 4, 9, 6, 5, 2, 7, 4, 9, 0, 1, 4, 7, 2, 5, 8, 9, 2, 7, 0, 3, 4, 9, 4, 5, 6, 9, 4, 1, 0, 1, 8, 9, 8, 5, 6, 9, 8, 7, 0, 7, 8, 7, 8, 5, 2, 1, 2, 1, 0, 1, 4, 7, 2, 5, 2, 7, 4, 9, 0, 7, 6, 3, 4, 5, 6, 7, 6, 1, 0, 1, 6, 1, 2, 5, 2, 9, 4, 9, 0, 3, 8, 3, 8, 5, 4, 3, 6, 7, 0, 9, 2, 7, 6, 5, 8, 9, 4, 9, 0, 3, 4, 7, 2, 5, 6, 9, 4, 7, 0, 1, 4, 3, 4, 5, 4, 7, 4, 9, 0, 9, 8, 3, 2, 5, 4, 7, 6, 9, 0, 3, 4, 3, 2, 5, 4, 3, 8, 3, 0, 7, 2, 1, 2, 5, 2, 1, 2, 3, 0, 7, 8, 3, 8, 5, 4, 1, 6, 1, 0, 3, 2, 3, 8, 5, 2, 7, 4, 3, 0, 3, 4, 3, 8, 5, 6, 9, 2, 9, 0, 7, 8, 9, 8, 5, 4, 7, 2, 7, 0, 3, 2, 7, 2, 5, 4, 7, 4, 1, 0, 1, 4, 3, 8, 5, 2, 7, 4, 3, 0, 7, 6, 7, 6, 5, 8, 7, 6, 7, 0, 7, 8, 3, 2, 5, 6, 9, 8, 7, 0, 3, 8, 9, 6, 5, 2, 3, 4, 3, 0, 3, 8, 3, 2, 5, 4, 1, 2, 9, 0, 1, 4, 3, 8, 5, 8, 3, 8, 3, 0, 1, 2, 1, 6, 5, 6, 9, 4, 3, 0, 9, 4, 1, 2, 5, 4, 9, 4, 1, 0, 3, 4, 7, 4, 5, 2, 7, 4, 1, 0, 1, 4, 9, 4, 5, 4, 9, 4, 3, 0, 3, 2, 1, 6, 5, 8, 3, 6, 9, 0, 3, 8, 3, 8, 5, 4, 3, 8, 1, 0, 9, 2, 1, 6, 5, 8, 9, 6, 1, 0, 1, 6, 1, 2, 5, 2, 9, 2, 9, 0, 9, 2, 1, 8, 5, 4, 7, 4, 9, 0, 3, 8, 3, 4, 5, 4, 3, 6, 1, 0, 7, 2, 1, 6, 5, 6, 1, 6, 1, 0, 1, 4, 7, 8, 5, 6, 9, 8, 7, 0, 9, 8, 3, 4, 5, 6, 9, 4, 1, 0, 1, 6, 1, 6, 5, 4, 7, 6, 9, 0, 9, 2, 9, 8, 5, 4, 9, 8, 7, 0, 3, 8, 9, 4, 5, 6, 7, 4, 7, 0, 1, 6, 7, 4, 5, 8, 9, 4, 3, 0, 1, 2, 7, 4, 5, 8, 3, 8, 7, 0, 7, 6, 1, 2, 5, 8, 3, 2, 1, 0, 1, 6, 1, 6, 5, 4, 1, 2, 9, 0, 3, 2, 1, 4, 5, 8, 3, 8, 3, 0, 9, 2, 1, 2, 5, 8, 9, 8, 7, 0, 1, 4, 7, 6, 5, 8, 3, 8, 1, 0, 3, 6, 7, 4, 5, 6, 1, 6, 9, 0, 7, 8, 9, 4, 5, 2, 1, 2, 9, 0, 3, 8, 3, 8, 5, 6, 1, 4, 1, 0, 7, 6, 1, 2, 5, 6, 7, 6, 3, 0, 9, 4, 1, 6, 5, 8, 3, 4, 3, 0, 1, 6, 7, 4, 5, 8, 7, 6, 1, 0, 3, 8, 1, 8, 5, 6, 1, 4, 1, 0, 3, 4,
     
    Last edited: Apr 26, 2013
  4. Apr 26, 2013 #3
    Look at the header files of http://www.boost.org/doc/libs/1_53_0/doc/html/boost_random.html, pick your flavor and recode that with Java. (And pls don't forget to properly credit the inventors of the algorithms).

    About the static var issue:
    - If your program is single-threaded you already have all pieces,
    - BUT don't make that var "public", but add it to your RNG class itself with "private" visibility.

    Regards, Solkar
     
  5. Apr 26, 2013 #4
    I didn't know it was already invented.
     
  6. May 1, 2013 #5
    Unless the purpose of this is to try implementing an random number generator then I'd just use an off-the-shelf one. For Java something in http://commons.apache.org/proper/commons-math/ would probably work. Note that it also supports synchronization if you want to use it in a multi-threaded environment.

    Javadoc of the random generator interface in that library:
    http://commons.apache.org/proper/commons-math/javadocs/api-3.2/index.html

    As to static variables in Java that example is fine. I am not sure what you mean about about only one class per file being a jGRASP thing (also why jGRASP instead of Eclipse, NetBeans, or even the free version of Intellij?). Having only one top level class per file is just part of the Java language. You just put the Global class in a separate file and then make sure its on the classpath when you build your main class.
     
  7. May 26, 2013 #6

    harborsparrow

    User Avatar
    Gold Member

    I might hide the random number generator in a static function (that returns the random number), and also you need to think about whether multiple threads will be calling the static function. If they are, the static function itself needs to complete before another thread can call it. There is a way to do that, but right off hand, I am not remembering it.
     
  8. May 29, 2013 #7
    synchronized
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Java question: Need some sort of global variable.
  1. Global variables. (Replies: 7)

  2. [Java] Selection Sort (Replies: 4)

Loading...