我如何通过c#统一使用一个特殊的独立Random

How can I use a special independent Random in unity via c#

我想使用一个独立的Random实例,这样我就可以为这个独立的Random设置一个特殊的种子。我只希望这个随机数的种子是特殊的,而全局的 Random.seed 是正常的。

我试试这个:

public Random newRandom = new Random();

但是我发现新的Random没有设置seed的函数,因为UnityEngine.Random.seed是静态成员。我该怎么做?

如果我成功设置种子,我想使用 newRandom.range(int, int) 来获取新值。

我相信您混淆了 UnityEngine.Random class 和 System.Random class。不幸的是,它们具有相同的名称,并且许多开发人员默认使用 UnityEngineSystem(这也会导致混淆 Object class)。

UnityEngine.Random 是完全静态的。所以,如果你写 new Random(),而你没有得到编译错误,这意味着你在文件中有 using System;,编译器实际上将你理解为 new System.Random()

对于这种情况,使用 System.Random() 实际上是个不错的主意;请注意 UnityEngine.RandomSystem.Random 不能保证从同一种子产生相同的值。当然,如果你想指定一个自定义种子,你应该这样做 with the constructor new Random(int seed),正如@GreenEyedAndy 所建议的那样。

Unity 和 Mono 各有一个 Random Class.

Unity Random允许您使用Random.seed设置特定的种子,但不能实例化。

Mono Random可以用一个特殊的种子实例化。

您可能应该使用 System.Random 作为您的用例。

随便写:

public System.Random newRandom = new System.Random(seed);

You should write System.Random because otherwise, even if you used the System namespace, you will have an ambiguity and the compiler will complain.

小心,因为它的工作方式并不完全相同。