Skip to content

Commit

Permalink
More next randoms.
Browse files Browse the repository at this point in the history
  • Loading branch information
mihxil committed Nov 1, 2024
1 parent e4f319e commit 3dc57b0
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.util.function.UnaryOperator;

import org.meeuw.math.Utils;
import org.meeuw.math.abstractalgebra.GroupElement;
import org.meeuw.math.abstractalgebra.dim2.Matrix2;
import org.meeuw.math.abstractalgebra.dim2.Vector2;
Expand Down Expand Up @@ -94,7 +95,7 @@ public String toString() {
}

public Matrix2 asMatrix2() {
double phi = 2 * Math.PI * k / group.n;
double phi = Utils.Math_2PI * k / group.n;
double cos = Math.cos(phi);
double sin = Math.sin(phi);
if (symmetry == r) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import org.meeuw.math.abstractalgebra.*;
import org.meeuw.math.abstractalgebra.reals.RealField;

import static org.meeuw.math.Utils.Math_2PI;

/**
* SO(3) group. A non-abelian multiplicative group.
*
Expand All @@ -42,9 +44,9 @@ public Rotation one() {

@Override
public Rotation nextRandom(Random r) {
Rotation rx = Rotation.Rx(r.nextDouble(0, 2 * Math.PI));
Rotation ry = Rotation.Ry(r.nextDouble(0, 2 * Math.PI));
Rotation rz = Rotation.Rz(r.nextDouble(0, 2 * Math.PI));
Rotation rx = Rotation.Rx(r.nextDouble(0d, Math_2PI));
Rotation ry = Rotation.Ry(r.nextDouble(0d, Math_2PI));
Rotation rz = Rotation.Rz(r.nextDouble(0d, Math_2PI));
return rx.times(ry).times(rz);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,16 @@ public Permutation one() {
return one;
}

@Override
public Permutation nextRandom(Random random) {
List<Integer> list = new ArrayList<>(degree);
for (int i = 0; i < degree; i++) {
list.add(i);
}
Collections.shuffle(list, random);
return Permutation.zeroOffset(list.stream().mapToInt(i -> i).toArray());
}

@Override
public Cardinality getCardinality() {
return Cardinality.of(IntegerUtils.factorial(degree));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import java.lang.reflect.Array;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Stream;

Expand Down Expand Up @@ -86,9 +87,14 @@ public Field<E> getField() {
return field;
}

@SuppressWarnings("unchecked")
@Override
public boolean equals(Object o) {
return this == o;
public NVector<E> nextRandom(Random random) {
E[] elements = (E[]) Array.newInstance(field.getElementClass(), dimension);
for (int i = 0; i < dimension; i ++) {
elements[i] = field.nextRandom(random);
}
return new NVector<>(elements);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@
import org.meeuw.math.abstractalgebra.dim3.FieldVector3;
import org.meeuw.math.abstractalgebra.dim3.Rotation;
import org.meeuw.math.abstractalgebra.reals.RealNumber;
import org.meeuw.theories.abstractalgebra.MultiplicativeGroupTheory;
import org.meeuw.math.text.TextUtils;
import org.meeuw.theories.abstractalgebra.MultiplicativeGroupTheory;

import static java.lang.Math.PI;
import static org.assertj.core.api.Assertions.assertThat;
import static org.meeuw.math.Utils.Math_2PI;
import static org.meeuw.math.abstractalgebra.dim3.FieldVector3.of;
import static org.meeuw.math.abstractalgebra.dim3.Rotation.*;
import static org.meeuw.math.uncertainnumbers.CompareConfiguration.withLooseEquals;
Expand Down Expand Up @@ -90,7 +91,7 @@ public void determinantShouldBeOne(@ForAll(ELEMENTS) Rotation r) {

@Override
public Arbitrary<Rotation> elements() {
return Arbitraries.doubles().ofScale(20).between(0, 2d * PI)
return Arbitraries.doubles().ofScale(20).between(0, Math_2PI)
.tuple3()
.map(t -> Rx(t.get1()).times(Ry(t.get2())).times(Rz(t.get3())))
;
Expand Down
2 changes: 2 additions & 0 deletions mihxil-math/src/main/java/org/meeuw/math/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@ private Utils() {}
public static final String e = "2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416928368190255151086574637721112523897844250569536967707854499699679468644549059879316368892300987931277361782154249992295763514822082698951936680331825288693984964651058209392398294887933203625094431173012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509961818815930416903515988885193458072738667385894228792284998920868058257492796104841984443634632449684875602336248270419786232090021609902353043699418491463140934317381436405462531520961836908887070167683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354";


public static final double Math_2PI = 2d * Math.PI;

}
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ default E[] newArray(int i) {
*/
@Override
default E nextRandom(Random random) {
throw new UnsupportedOperationException("nextRandom not implemented in " + this.getClass() + " " + this);
throw new UnsupportedOperationException("nextRandom not implemented in " + this.getClass() + " " + this);
}


Expand Down

0 comments on commit 3dc57b0

Please sign in to comment.