我正在使用 Random 类来生成数字。
class Random {
UInt128 seed;
public Random(UInt128 seed) {
this.seed = seed;
}
public int Next(int maxValue) {
NextSeed();
return (int)((seed * seed * 158 + 52185) % (UInt128)maxValue);
}
public void NextSeed() {
seed = (seed * seed + 1856237) % UInt128.MaxValue;
}
}
然后通过循环for (int i = 0; i < 16; i++)我生成这些随机值并且它们是不同的。然而,当再次调用这个循环时,会生成同一系列的数字,尽管粒度应该不同,但我没有重新定义它并使用一个对象。
以下是具有相同值的行的输出示例:
7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1
7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1
7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1
7 1 7 1 7 1 7 1 7 1 7 1 7 1 7 1
... // и т.д.
PS我需要使用我自己的课程。是的,我知道代码很糟糕,而且转换为 UInt128 看起来不太好。
测试代码:
Random random = new(27652582738); // сид задан для примера
for (int j = 0; j < 32; j++) {
for (int i = 0; i < 16; i++) {
Console.Write(random.Next(16).ToString() + " ");
}
Console.Write("\n");
}
