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;
   }
}