如何在C#中的层次结构中生成可预测的随机流?

时间:2019-05-30 21:56:41

标签: random random-seed

我正在制作具有层次结构的程序游戏。

所以对象A将有10个孩子。

每个孩子将有10个孩子,依此类推。

现在假设我想给每个孩子一个随机的颜色和一个随机的位置(假设这些是整数)。

因此,使X为对象的“ ID”。

让COLOR和POSITION为PROPERTY类型的枚举。

然后我要生成随机整数:

http://some-address.com

所以我可以使用:

int GenerateRandomInteger(PROPERTY P, int childNumber);

例如。

有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,GetRandomInteger应该作为哈希函数实现。哈希函数获取任意数据(此处为PchildNumber的值)并输出哈希函数。出于游戏目的:

  • 哈希函数应具有 avalanche属性,这意味着输入的每一位都会影响哈希码的每一位。
  • 这里很好的哈希函数包括MurmurHash3和xxHash。

此答案还假设childNumber在整个应用程序中是唯一的,而不是给定的父代唯一。

然后,可以使用所得的哈希码生成随机颜色和位置(例如,可以提取哈希码的前24位并将其视为每分量8位RGB颜色)。但是有关如何工作的更多详细信息取决于您使用的是哪种编程语言以及颜色和位置可接受的范围(您在问题中未指定)(有几种语言使用intenum(例如)。

相关问题