RandomExtra class
Пакет: com.hypixel.hytale.math.random
Файл: com/hypixel/hytale/math/random/RandomExtra.java
Поля (48)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
ThreadLocalRandom |
var0 |
|
double |
var1 |
|
double |
var1 |
|
Iterator |
var2 |
|
Iterator |
var2 |
|
|
var2 |
|
double |
var3 |
|
ThreadLocalRandom |
var3 |
|
double |
var3 |
|
int |
var3 |
|
Iterator |
var3 |
|
Iterator |
var3 |
|
|
var3 |
|
Iterator |
var3 |
|
int |
var3 |
|
int |
var3 |
|
Iterator |
var4 |
|
Object |
var4 |
|
|
var4 |
|
int |
var4 |
|
Iterator |
var4 |
|
double |
var4 |
|
int |
var4 |
|
int |
var4 |
|
Object |
var5 |
|
|
var5 |
|
Object |
var5 |
|
Object |
var5 |
|
|
var5 |
|
Iterator |
var5 |
|
int |
var5 |
|
Object |
var6 |
|
Object |
var6 |
|
|
var6 |
|
Iterator |
var6 |
|
Object |
var6 |
|
int |
var6 |
|
Object |
var7 |
|
|
var7 |
|
int |
var7 |
|
Object |
var8 |
|
double |
var8 |
|
int |
var9 |
Методы (47)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int ix = var3; ix < var0; ix++) |
|
|
for for(double var6 : var0) |
|
|
for for(int var9 = 0; var9 < var0.length - 1; var9++) |
abstract |
|
for for(int var5 = 0; var5 < var0.size() |
abstract |
|
for for(int var7 = 0; var7 < var0.size() |
|
|
if if(var2 == 0.0) |
|
|
if if(var2 < 0.0) |
|
|
if if(var2 == 0) |
|
|
if if(var2 < 0) |
|
|
if if(var3 == 0) |
|
|
if if(var3 < 0) |
|
|
if if(var3 == 0.0) |
|
|
if if(var3 < 0.0) |
|
|
if if(var3 == 0.0) |
|
|
if if(var3 < 0.0) |
|
|
if if(var4 < var2) |
|
|
if if(var7 < var2) |
|
|
if if(var8 != null) |
|
|
if if(var6 < var2) |
|
|
if if(var9 < var2) |
|
|
if if(var3 < var1) |
|
|
if if(var1 > 0 && var0 > 0) |
|
|
if if(var5 < var3) |
|
|
if if(var8 <= 0.0) |
static |
int |
pickWeightedIndexint pickWeightedIndex(@Nonnull double[] var0) |
static |
double |
randomBinomialdouble randomBinomial() |
static |
boolean |
randomBooleanboolean randomBoolean() |
static |
Duration |
randomDurationDuration randomDuration(@Nonnull Duration var0, @Nonnull Duration var1) |
static |
<T> T |
randomElement<T> T randomElement(@Nonnull List<T> var0) |
abstract |
return |
randomIntWeightedElementreturn randomIntWeightedElement(var0, var1, var3) |
static |
double |
randomRangedouble randomRange(@Nonnull double[] var0) |
static |
double |
randomRangedouble randomRange(double var0, double var2) |
static |
float |
randomRangefloat randomRange(@Nonnull float[] var0) |
static |
float |
randomRangefloat randomRange(float var0, float var1) |
static |
int |
randomRangeint randomRange(int var0) |
static |
int |
randomRangeint randomRange(@Nonnull int[] var0) |
static |
int |
randomRangeint randomRange(int var0, int var1) |
static |
long |
randomRangelong randomRange(long var0, long var2) |
abstract |
return |
randomRangereturn randomRange(var0[0], var0[1]) |
abstract |
return |
randomWeightedElementreturn randomWeightedElement(var0, var1, var3) |
abstract |
return |
randomWeightedElementreturn randomWeightedElement(var0, var1, var2, var4) |
abstract |
return |
randomWeightedElementFilteredreturn randomWeightedElementFiltered(var0, var1, var2, var4) |
static |
<T> void |
reservoirSample<T> void reservoirSample(@Nonnull List<T> var0, @Nonnull Predicate<T> var1, int var2, @Nonnull List<T> var3) |
static |
<E, S extends List<E>, F, T extends List<F>, G, H> void |
reservoirSample<E, S extends List<E>, F, T extends List<F>, G, H> void reservoirSample(@Nonnull S var0, @Nonnull TriFunction<E, G, H, F> var1, int var2, @Nonnull T var3, G var4, H var5) |
static |
<E, T extends List<E>> void |
reservoirSample<E, T extends List<E>> void reservoirSample(E var0, int var1, @Nonnull T var2) |
static |
int |
reservoirSampleint reservoirSample(int var0, int var1, @Nonnull int[] var2) |
|
|
while while(var4 < var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.math.random;
class="kw">import com.hypixel.hytale.function.function.TriFunction;
class="kw">import java.time.Duration;
class="kw">import java.util.Collection;
class="kw">import java.util.Iterator;
class="kw">import java.util.List;
class="kw">import java.util.concurrent.ThreadLocalRandom;
class="kw">import java.util.function.BiPredicate;
class="kw">import java.util.function.Predicate;
class="kw">import java.util.function.ToDoubleBiFunction;
class="kw">import java.util.function.ToDoubleFunction;
class="kw">import java.util.function.ToIntFunction;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class="kw">final class RandomExtra {
class="kw">private RandomExtra() {
}
class="kw">public class="kw">static double randomBinomial() {
ThreadLocalRandom var0 = ThreadLocalRandom.current();
double var1 = var0.nextDouble();
double var3 = var0.nextDouble();
class="kw">return var1 - var3;
}
class="kw">public class="kw">static double randomRange(@Nonnull double[] var0) {
class="kw">return randomRange(var0[0], var0[1]);
}
class="kw">public class="kw">static double randomRange(double var0, double var2) {
class="kw">return var0 + ThreadLocalRandom.current().nextDouble() * (var2 - var0);
}
class="kw">public class="kw">static float randomRange(@Nonnull float[] var0) {
class="kw">return randomRange(var0[0], var0[1]);
}
class="kw">public class="kw">static float randomRange(float var0, float var1) {
class="kw">return var0 + ThreadLocalRandom.current().nextFloat() * (var1 - var0);
}
class="kw">public class="kw">static int randomRange(int var0) {
class="kw">return ThreadLocalRandom.current().nextInt(var0);
}
class="kw">public class="kw">static int randomRange(@Nonnull int[] var0) {
class="kw">return randomRange(var0[0], var0[1]);
}
class="kw">public class="kw">static int randomRange(int var0, int var1) {
class="kw">return ThreadLocalRandom.current().nextInt(var1 - var0 + 1) + var0;
}
class="kw">public class="kw">static long randomRange(long var0, long var2) {
class="kw">return ThreadLocalRandom.current().nextLong(var2 - var0 + 1L) + var0;
}
class="kw">public class="kw">static Duration randomDuration(@Nonnull Duration var0, @Nonnull Duration var1) {
class="kw">return Duration.ofNanos(randomRange(var0.toNanos(), var1.toNanos()));
}
class="kw">public class="kw">static boolean randomBoolean() {
class="kw">return ThreadLocalRandom.current().nextBoolean();
}
class="kw">public class="kw">static <T> T randomElement(@Nonnull List<T> var0) {
class="kw">return var0.get(randomRange(var0.size()));
}
@Nonnull
class="kw">public class="kw">static Vector3d jitter(@Nonnull Vector3d var0, double var1) {
ThreadLocalRandom var3 = ThreadLocalRandom.current();
var0.x = var0.x + var3.nextDouble() * var1;
var0.y = var0.y + var3.nextDouble() * var1;
var0.z = var0.z + var3.nextDouble() * var1;
class="kw">return var0;
}
@Nullable
class="kw">public class="kw">static <T> T randomWeightedElement(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull ToDoubleFunction<T> var1) {
Iterator var2 = var0.iterator();
double var3 = 0.0;
while (var2.hasNext()) {
var3 += var1.applyAsDouble((T)var2.next());
}
class="kw">return randomWeightedElement(var0, var1, var3);
}
@Nullable
class="kw">public class="kw">static <T> T randomWeightedElement(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull ToDoubleFunction<T> var1, double var2) {
if (var2 == 0.0) {
class="kw">return null;
}
Iterator var4 = var0.iterator();
Object var5 = null;
var2 *= ThreadLocalRandom.current().nextDouble();
while (var4.hasNext()) {
var5 = (T)var4.next();
var2 -= var1.applyAsDouble(var5);
if (var2 < 0.0) {
break;
}
}
class="kw">return var5;
}
@Nullable
class="kw">public class="kw">static <T> T randomIntWeightedElement(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull ToIntFunction<T> var1) {
Iterator var2 = var0.iterator();
int var3 = 0;
while (var2.hasNext()) {
var3 += var1.applyAsInt((T)var2.next());
}
class="kw">return randomIntWeightedElement(var0, var1, var3);
}
@Nullable
class="kw">public class="kw">static <T> T randomIntWeightedElement(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull ToIntFunction<T> var1, int var2) {
if (var2 == 0) {
class="kw">return null;
}
Iterator var3 = var0.iterator();
Object var4 = null;
var2 = randomRange(var2);
while (var3.hasNext()) {
var4 = (T)var3.next();
var2 -= var1.applyAsInt(var4);
if (var2 < 0) {
break;
}
}
class="kw">return var4;
}
@Nullable
class="kw">public class="kw">static <T> T randomWeightedElementFiltered(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull Predicate<T> var1, @Nonnull ToIntFunction<T> var2) {
Iterator var3 = var0.iterator();
int var4 = 0;
while (var3.hasNext()) {
Object var5 = (T)var3.next();
if (var1.test(var5)) {
var4 += var2.applyAsInt(var5);
}
}
class="kw">return randomWeightedElementFiltered(var0, var1, var2, var4);
}
@Nullable
class="kw">public class="kw">static <T> T randomWeightedElementFiltered(
@Nonnull Collection<? class="kw">extends T> var0, @Nonnull Predicate<T> var1, @Nonnull ToIntFunction<T> var2, int var3
) {
if (var3 == 0) {
class="kw">return null;
}
Iterator var4 = var0.iterator();
Object var5 = null;
var3 = randomRange(var3);
while (var4.hasNext()) {
var5 = (T)var4.next();
if (var1.test(var5)) {
var3 -= var2.applyAsInt(var5);
if (var3 < 0) {
break;
}
}
}
class="kw">return var5;
}
@Nullable
class="kw">public class="kw">static <T> T randomWeightedElement(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull Predicate<T> var1, @Nonnull ToDoubleFunction<T> var2) {
Iterator var3 = var0.iterator();
double var4 = 0.0;
while (var3.hasNext()) {
Object var6 = (T)var3.next();
if (var1.test(var6)) {
var4 += var2.applyAsDouble(var6);
}
}
class="kw">return randomWeightedElement(var0, var1, var2, var4);
}
@Nullable
class="kw">public class="kw">static <T> T randomWeightedElement(@Nonnull Collection<? class="kw">extends T> var0, @Nonnull Predicate<T> var1, @Nonnull ToDoubleFunction<T> var2, double var3) {
if (var3 == 0.0) {
class="kw">return null;
}
Iterator var5 = var0.iterator();
Object var6 = null;
var3 *= ThreadLocalRandom.current().nextDouble();
while (var5.hasNext()) {
var6 = (T)var5.next();
if (var1.test(var6)) {
var3 -= var2.applyAsDouble(var6);
if (var3 < 0.0) {
break;
}
}
}
class="kw">return var6;
}
@Nullable
class="kw">public class="kw">static <T, U> T randomWeightedElement(
@Nonnull Collection<? class="kw">extends T> var0, @Nonnull BiPredicate<T, U> var1, @Nonnull ToDoubleBiFunction<T, U> var2, double var3, U var5
) {
if (var3 == 0.0) {
class="kw">return null;
}
Iterator var6 = var0.iterator();
Object var7 = null;
var3 *= ThreadLocalRandom.current().nextDouble();
while (var6.hasNext()) {
var7 = (T)var6.next();
if (var1.test(var7, var5)) {
var3 -= var2.applyAsDouble(var7, var5);
if (var3 < 0.0) {
break;
}
}
}
class="kw">return var7;
}
class="kw">public class="kw">static <T> void reservoirSample(@Nonnull List<T> var0, @Nonnull Predicate<T> var1, int var2, @Nonnull List<T> var3) {
int var4 = 0;
for (int var5 = 0; var5 < var0.size(); var5++) {
Object var6 = var0.get(var5);
if (var1.test(var6)) {
if (var4 < var2) {
var3.add(var6);
} else {
int var7 = randomRange(var4 + 1);
if (var7 < var2) {
var3.set(var7, var6);
}
}
var4++;
}
}
}
class="kw">public class="kw">static <E, S class="kw">extends List<E>, F, T class="kw">extends List<F>, G, H> void reservoirSample(
@Nonnull S var0, @Nonnull TriFunction<E, G, H, F> var1, int var2, @Nonnull T var3, G var4, H var5
) {
int var6 = 0;
for (int var7 = 0; var7 < var0.size(); var7++) {
Object var8 = var1.apply(var0.get(var7), var4, var5);
if (var8 != null) {
if (var6 < var2) {
var3.add(var8);
} else {
int var9 = randomRange(var6 + 1);
if (var9 < var2) {
var3.set(var9, var8);
}
}
var6++;
}
}
}
class="kw">public class="kw">static <E, T class="kw">extends List<E>> void reservoirSample(E var0, int var1, @Nonnull T var2) {
if (var2.size() < var1) {
var2.add(var0);
} else {
int var3 = randomRange(var1 + 1);
if (var3 < var1) {
var2.set(var3, var0);
}
}
}
class="kw">public class="kw">static int reservoirSample(int var0, int var1, @Nonnull int[] var2) {
if (var1 > 0 && var0 > 0) {
int var3 = Math.min(Math.min(var1, var0), var2.length);
int var4 = 0;
while (var4 < var3) {
var2[var4] = var4++;
}
for (int ix = var3; ix < var0; ix++) {
int var5 = randomRange(ix + 1);
if (var5 < var3) {
var2[var5] = ix;
}
}
class="kw">return var3;
} else {
class="kw">return 0;
}
}
class="kw">public class="kw">static int pickWeightedIndex(@Nonnull double[] var0) {
double var1 = 0.0;
for (double var6 : var0) {
var1 += var6;
}
double var8 = ThreadLocalRandom.current().nextDouble(var1);
for (int var9 = 0; var9 < var0.length - 1; var9++) {
var8 -= var0[var9];
if (var8 <= 0.0) {
class="kw">return var9;
}
}
class="kw">return var0.length - 1;
}
}