mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-24 21:48: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>
|
||||
/// <returns>A new seed source with the seed added.</returns>
|
||||
public SeedSource Add(int seed) {
|
||||
seed ^= seed << 7;
|
||||
seed *= 207398809;
|
||||
seed ^= seed << 17;
|
||||
seed *= 928511849;
|
||||
seed ^= seed << 12;
|
||||
seed += 3;
|
||||
return new SeedSource(new int?(this.Get() + seed));
|
||||
return new SeedSource(new int?(SeedSource.Scramble(this.Get()) + SeedSource.Scramble(seed)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -229,5 +223,14 @@ namespace MLEM.Misc {
|
|||
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