RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
RandomGen.java
1package com.osroyale.util;
2
3import java.util.Arrays;
4import java.util.List;
5import java.util.Random;
6import java.util.concurrent.ThreadLocalRandom;
7
44
45* this class across multiple threads, this should only be instantiated locally
46 * unless certain that it will never be accessed by another thread.
47 * @author lare96 <http://github.com/lare96>
48 * @author Ryley Kimmel <ryley.kimmel@live.com>
49 */
50public final class RandomGen {
51
65 private final ThreadLocalRandom random = ThreadLocalRandom.current();
66
71 public ThreadLocalRandom get() {
72 return random;
73 }
74
83 public int inclusive(int min, int max) {
84 if(max < min) {
85 max = min + 1;
86 }
87 return random.nextInt((max - min) + 1) + min;
88 }
89
97 public int inclusive(int range) {
98 return inclusive(0, range);
99 }
100
111 public int inclusiveExcludes(int min, int max, int... exclude) {
112 Arrays.sort(exclude);
113
114 int result = inclusive(min, max);
115 while(Arrays.binarySearch(exclude, result) >= 0) {
116 result = inclusive(min, max);
117 }
118
119 return result;
120 }
121
129 public float floatRandom(float range) {
130 if(range < 0F)
131 throw new IllegalArgumentException("range <= 0");
132 return random.nextFloat() * range;
133 }
134
140 public int randomIndex(Object[] array) {
141 return (int) (random.nextDouble() * array.length);
142 }
143
149 public <T> T random(T[] array) {
150 return array[(int) (random.nextDouble() * array.length)];
151 }
152
158 public int random(int[] array) {
159 return array[(int) (random.nextDouble() * array.length)];
160 }
161
167 public long random(long[] array) {
168 return array[(int) (random.nextDouble() * array.length)];
169 }
170
176 public double random(double[] array) {
177 return array[(int) (random.nextDouble() * array.length)];
178 }
179
185 public short random(short[] array) {
186 return array[(int) (random.nextDouble() * array.length)];
187 }
188
194 public byte random(byte[] array) {
195 return array[(int) (random.nextDouble() * array.length)];
196 }
197
203 public float random(float[] array) {
204 return array[(int) (random.nextDouble() * array.length)];
205 }
206
212 public boolean random(boolean[] array) {
213 return array[(int) (random.nextDouble() * array.length)];
214 }
215
221 public char random(char[] array) {
222 return array[(int) (random.nextDouble() * array.length)];
223 }
224
230 public <T> T random(List<T> list) {
231 return list.get((int) (random.nextDouble() * list.size()));
232 }
233
240 public <T> T[] shuffle(T[] array) {
241 for(int i = array.length - 1; i > 0; i--) {
242 int index = random.nextInt(i + 1);
243 T a = array[index];
244 array[index] = array[i];
245 array[i] = a;
246 }
247 return array;
248 }
249
256 public int[] shuffle(int[] array) {
257 for(int i = array.length - 1; i > 0; i--) {
258 int index = random.nextInt(i + 1);
259 int a = array[index];
260 array[index] = array[i];
261 array[i] = a;
262 }
263 return array;
264 }
265
272 public long[] shuffle(long[] array) {
273 for(int i = array.length - 1; i > 0; i--) {
274 int index = random.nextInt(i + 1);
275 long a = array[index];
276 array[index] = array[i];
277 array[i] = a;
278 }
279 return array;
280 }
281
288 public double[] shuffle(double[] array) {
289 for(int i = array.length - 1; i > 0; i--) {
290 int index = random.nextInt(i + 1);
291 double a = array[index];
292 array[index] = array[i];
293 array[i] = a;
294 }
295 return array;
296 }
297
304 public short[] shuffle(short[] array) {
305 for(int i = array.length - 1; i > 0; i--) {
306 int index = random.nextInt(i + 1);
307 short a = array[index];
308 array[index] = array[i];
309 array[i] = a;
310 }
311 return array;
312 }
313
320 public byte[] shuffle(byte[] array) {
321 for(int i = array.length - 1; i > 0; i--) {
322 int index = random.nextInt(i + 1);
323 byte a = array[index];
324 array[index] = array[i];
325 array[i] = a;
326 }
327 return array;
328 }
329
336 public float[] shuffle(float[] array) {
337 for(int i = array.length - 1; i > 0; i--) {
338 int index = random.nextInt(i + 1);
339 float a = array[index];
340 array[index] = array[i];
341 array[i] = a;
342 }
343 return array;
344 }
345
352 public boolean[] shuffle(boolean[] array) {
353 for(int i = array.length - 1; i > 0; i--) {
354 int index = random.nextInt(i + 1);
355 boolean a = array[index];
356 array[index] = array[i];
357 array[i] = a;
358 }
359 return array;
360 }
361
367 public char[] shuffle(char[] array) {
368 for(int i = array.length - 1; i > 0; i--) {
369 int index = random.nextInt(i + 1);
370 char a = array[index];
371 array[index] = array[i];
372 array[i] = a;
373 }
374 return array;
375 }
376
383 public boolean success(double value) {
384 return random.nextDouble() <= value;
385 }
386}