mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-25 05:58:35 +01:00
improved SeedSource algorithm to be less predictable
This commit is contained in:
parent
0a62ae0036
commit
e3b41ebeea
3 changed files with 20008 additions and 20005 deletions
|
@ -181,13 +181,7 @@ namespace MLEM.Misc {
|
||||||
/// <param name="seed">The seed to add.</param>
|
/// <param name="seed">The seed to add.</param>
|
||||||
/// <returns>A new seed source with the seed added.</returns>
|
/// <returns>A new seed source with the seed added.</returns>
|
||||||
public SeedSource Add(int seed) {
|
public SeedSource Add(int seed) {
|
||||||
seed ^= seed << 7;
|
return new SeedSource(new int?(SeedSource.Scramble(this.Get()) + SeedSource.Scramble(seed)));
|
||||||
seed *= 207398809;
|
|
||||||
seed ^= seed << 17;
|
|
||||||
seed *= 928511849;
|
|
||||||
seed ^= seed << 12;
|
|
||||||
seed += 3;
|
|
||||||
return new SeedSource(new int?(this.Get() + seed));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -229,5 +223,14 @@ namespace MLEM.Misc {
|
||||||
return new Random(this.Get());
|
return new Random(this.Get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int Scramble(int x) {
|
||||||
|
x += 84317;
|
||||||
|
x ^= x << 7;
|
||||||
|
x *= 207398809;
|
||||||
|
x ^= x << 17;
|
||||||
|
x *= 928511849;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue