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

Random 如何在c#的层次结构中生成可预测的随机流?,random,random-seed,Random,Random Seed,我正在做一个有层次的程序性游戏 因此,对象A将有10个孩子 每个孩子将有10个孩子,以此类推 现在假设我想给每个孩子一个随机颜色和一个随机位置(假设它们是由整数给出的) 因此,设X为对象的“ID” 设颜色和位置为类型属性的枚举 然后我想生成随机整数: int GenerateRandomInteger(PROPERTY P, int childNumber); 因此,我可以使用: int N = parentObject.GenerateRandomInteger(COLOUR, 7); 比

我正在做一个有层次的程序性游戏

因此,对象A将有10个孩子

每个孩子将有10个孩子,以此类推

现在假设我想给每个孩子一个随机颜色和一个随机位置(假设它们是由整数给出的)

因此,设X为对象的“ID”

设颜色和位置为类型属性的枚举

然后我想生成随机整数:

int GenerateRandomInteger(PROPERTY P, int childNumber);
因此,我可以使用:

int N = parentObject.GenerateRandomInteger(COLOUR, 7);
比如说


有什么办法吗?

在这种情况下,
GetRandomInteger
应该作为哈希函数实现。哈希函数获取任意数据(这里是
P
childNumber
的值)并输出哈希函数。就游戏而言:

  • 哈希函数应该具有雪崩特性,这意味着输入的每一位都会影响哈希代码的每一位
  • 好的散列函数包括hash3和xxHash
这个答案还假设
childNumber
在整个应用程序中是唯一的,而不是对于给定的父对象是唯一的

由此产生的散列码随后可用于生成随机颜色和位置(例如,可提取散列码的前24位并将其视为每分量8位RGB颜色)。但是关于这将如何工作的更多细节将取决于您使用的编程语言以及颜色和位置的可接受范围,您在问题中没有指定这些范围(例如,有几种语言使用
int
s和
enum
s)