001    package model;
002    
003    import java.util.Random;
004    
005    /**
006     * Singleton random number generator.
007     *
008     * @author Mathias G. Ricken
009     */
010    public final class RandNumGenerator extends Random {
011        /**
012         * Singleton instance.
013         */
014        private static RandNumGenerator _instance = null;
015    
016        /**
017         * Seed value.
018         */
019        private int _seed = 0;
020    
021        /**
022         * Return singleton instance.
023         *
024         * @return singleton instance
025         */
026        public static synchronized RandNumGenerator instance() {
027            if (null == _instance) {
028                _instance = new RandNumGenerator();
029            }
030            return _instance;
031        }
032    
033        /**
034         * Overridden set seed method.
035         *
036         * @param seed new seed
037         */
038        public void setSeed(int seed) {
039            super.setSeed(seed);
040            _seed = seed;
041        }
042    
043        /**
044         * Return seed.
045         *
046         * @return seed
047         */
048        public int getSeed() {
049            return _seed;
050        }
051    
052        /**
053         * Private singleton constructor.
054         */
055        private RandNumGenerator() {
056        }
057    }
058