C# System.Random 接下来出来排序
C# System.Random Next comes out sorted
我正在尝试访问数组中的随机元素,但我使用的随机生成器一直按顺序给我数字,如下所示:
数字总是按顺序出现,永远不会完全随机(即下一个数字总是更大,直到达到最大值,然后再次从低数字开始)。这也可以是递增的或递减的。
我正在使用种子随机对象和 Random.Next(-100, 100)。
这与 MSDN Random.Next page
上展示的行为不同
我只能想到Unity打包的.Net版本没有最新的Random?对这种困惑有什么解决办法吗?
//Example
//Seed and ods set before the Awake method is called
public int seed;
public GameObject[] pathPartOds;
Random random;
GameObject[] path;
void Awake ()
{
random = new Random (seed);
}
void CreatePath (int length)
{
path = new GameObject[length];
for (int i = 0; i < length; i++)
path[i] = pathPartOds[random.Next (0, pathPartOds.length)];
}
使用了多个种子,它们都给出了相同的结果,我一直在使用随机整数创建种子
您需要恰好 一次 创建 Random
的一个实例,并将其作为参数传递到绘制随机数的函数中。
否则你会破坏生成器的统计属性,因为它是以系统(即非随机)方式播种的。这解释了输出的分段单调性。
我正在尝试访问数组中的随机元素,但我使用的随机生成器一直按顺序给我数字,如下所示:
数字总是按顺序出现,永远不会完全随机(即下一个数字总是更大,直到达到最大值,然后再次从低数字开始)。这也可以是递增的或递减的。
我正在使用种子随机对象和 Random.Next(-100, 100)。 这与 MSDN Random.Next page
上展示的行为不同我只能想到Unity打包的.Net版本没有最新的Random?对这种困惑有什么解决办法吗?
//Example
//Seed and ods set before the Awake method is called
public int seed;
public GameObject[] pathPartOds;
Random random;
GameObject[] path;
void Awake ()
{
random = new Random (seed);
}
void CreatePath (int length)
{
path = new GameObject[length];
for (int i = 0; i < length; i++)
path[i] = pathPartOds[random.Next (0, pathPartOds.length)];
}
使用了多个种子,它们都给出了相同的结果,我一直在使用随机整数创建种子
您需要恰好 一次 创建 Random
的一个实例,并将其作为参数传递到绘制随机数的函数中。
否则你会破坏生成器的统计属性,因为它是以系统(即非随机)方式播种的。这解释了输出的分段单调性。