我如何通过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。不幸的是,它们具有相同的名称,并且许多开发人员默认使用 UnityEngine
和 System
(这也会导致混淆 Object
class)。
UnityEngine.Random
是完全静态的。所以,如果你写 new Random()
,而你没有得到编译错误,这意味着你在文件中有 using System;
,编译器实际上将你理解为 new System.Random()
。
对于这种情况,使用 System.Random()
实际上是个不错的主意;请注意 UnityEngine.Random
和 System.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.
小心,因为它的工作方式并不完全相同。
我想使用一个独立的Random实例,这样我就可以为这个独立的Random设置一个特殊的种子。我只希望这个随机数的种子是特殊的,而全局的 Random.seed 是正常的。
我试试这个:
public Random newRandom = new Random();
但是我发现新的Random没有设置seed的函数,因为UnityEngine.Random.seed
是静态成员。我该怎么做?
如果我成功设置种子,我想使用 newRandom.range(int, int) 来获取新值。
我相信您混淆了 UnityEngine.Random
class 和 System.Random
class。不幸的是,它们具有相同的名称,并且许多开发人员默认使用 UnityEngine
和 System
(这也会导致混淆 Object
class)。
UnityEngine.Random
是完全静态的。所以,如果你写 new Random()
,而你没有得到编译错误,这意味着你在文件中有 using System;
,编译器实际上将你理解为 new System.Random()
。
对于这种情况,使用 System.Random()
实际上是个不错的主意;请注意 UnityEngine.Random
和 System.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 theSystem
namespace, you will have an ambiguity and the compiler will complain.
小心,因为它的工作方式并不完全相同。