Ceki Gulcu | 7ba0605 | 2011-10-16 10:28:44 +0200 | [diff] [blame] | 1 | /** |
| 2 | * Copyright (c) 2004-2011 QOS.ch |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 3 | * All rights reserved. |
Ceki Gulcu | 7ba0605 | 2011-10-16 10:28:44 +0200 | [diff] [blame] | 4 | * |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 5 | * Permission is hereby granted, free of charge, to any person obtaining |
| 6 | * a copy of this software and associated documentation files (the |
| 7 | * "Software"), to deal in the Software without restriction, including |
| 8 | * without limitation the rights to use, copy, modify, merge, publish, |
| 9 | * distribute, sublicense, and/or sell copies of the Software, and to |
| 10 | * permit persons to whom the Software is furnished to do so, subject to |
| 11 | * the following conditions: |
Ceki Gulcu | 7ba0605 | 2011-10-16 10:28:44 +0200 | [diff] [blame] | 12 | * |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 13 | * The above copyright notice and this permission notice shall be |
| 14 | * included in all copies or substantial portions of the Software. |
Ceki Gulcu | 7ba0605 | 2011-10-16 10:28:44 +0200 | [diff] [blame] | 15 | * |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| 17 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 18 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 19 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
| 20 | * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| 21 | * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| 22 | * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
Ceki Gulcu | 7ba0605 | 2011-10-16 10:28:44 +0200 | [diff] [blame] | 23 | * |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 24 | */ |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 25 | package org.slf4j.helpers; |
| 26 | |
Ceki Gulcu | 3121243 | 2015-03-26 12:59:25 +0100 | [diff] [blame^] | 27 | class MyRandom { |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 28 | |
Ceki Gulcu | 3121243 | 2015-03-26 12:59:25 +0100 | [diff] [blame^] | 29 | private final static long m = 200000000041L; // a prime number |
| 30 | private final static long a = 2000000011L; // a prime number |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 31 | |
Ceki Gulcu | 3121243 | 2015-03-26 12:59:25 +0100 | [diff] [blame^] | 32 | long y; |
| 33 | long unused; |
| 34 | int bits = 32; |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 35 | |
Ceki Gulcu | 3121243 | 2015-03-26 12:59:25 +0100 | [diff] [blame^] | 36 | public MyRandom() { |
| 37 | this(System.nanoTime()); |
| 38 | } |
| 39 | |
| 40 | public MyRandom(long seed) { |
| 41 | this.y = seed; |
| 42 | } |
| 43 | |
| 44 | int nextInt() { |
| 45 | // we don't really care about the randomness of this |
| 46 | // generator |
| 47 | y = (a * y + 1) % m; |
| 48 | unused = y >>> (48 - bits); // just exercise the >>> operator |
| 49 | return (int) (y); |
| 50 | } |
Ceki Gulcu | 88c4c45 | 2009-12-03 19:16:42 +0100 | [diff] [blame] | 51 | } |