1 package org.jgap.util; 2 3 24 25 public abstract class randomX { 26 27 private int nbits = 0; 28 private boolean iset = false; 29 30 48 49 public void setSeed() { 50 nbits = 0; 51 iset = false; 52 } 53 54 57 58 public abstract byte nextByte(); 59 60 69 70 72 73 public int nextInt() { 74 return (int) ((((int) nextShort()) << 16) | (((int) nextShort()) & 0xFFFF)); 75 } 76 77 79 80 public long nextLong() { 81 return (long) ((((long) nextInt()) << 32) | (((long) nextInt()) & 0xFFFFFFFFl)); 82 } 83 84 86 87 public float nextFloat() { 88 return (float) ((nextInt() & 0x7FFFFFFF) / (0x7FFFFFFF * 1.0)); 89 } 90 91 93 94 public double nextDouble() { 95 return (double) ((nextLong() & 0x7FFFFFFFFFFFFFFFl) / 96 (0x7FFFFFFFFFFFFFFFl * 1.0)); 97 } 98 99 private double gset; 100 101 104 105 public double nextGaussian() { 106 double fac, rsq, v1, v2; 107 108 if (!iset) { 109 do { 110 v1 = 2 * nextDouble() - 1; 111 v2 = 2 * nextDouble() - 1; 112 rsq = v1 * v1 + v2 * v2; 113 } while (rsq > 1.0 || rsq == 0.0); 114 fac = Math.sqrt(-2.0 * Math.log(rsq) / rsq); 115 gset = v1 * fac; 116 iset = true; 117 return v2 * fac; 118 } else { 119 iset = false; 120 return gset; 121 } 122 } 123 124 126 private byte b; 127 128 129 130 public boolean nextBit() { 131 boolean bit; 132 133 if (nbits <= 0) { 134 b = nextByte(); 135 nbits = 8; 136 } 137 bit = (b & 0x80) != 0; 138 b <<= 1; 139 nbits--; 140 return bit; 141 } 142 143 149 150 public void nextByte(byte buf[], int buflen) { 151 int i = 0; 152 153 while (buflen-- > 0) { 154 buf[i++] = nextByte(); 155 } 156 } 157 158 162 163 public void nextByte(byte buf[]) { 164 nextByte(buf, buf.length); 165 } 166 167 169 170 public short nextShort() { 171 return (short) ((((short) nextByte()) << 8) | ((short) (nextByte() & 0xFF))); 172 } 173 } 174 | Popular Tags |