我有一个图,每个节点有 4 个子节点。我编写了一个算法来生成从开始节点到结束节点的随机路径。在每个节点,它选择一个随机的下一个节点。访问过的节点可以重新访问。
代码如下:
public List<Node> GetPath(Node begin, Node end)
{
var nodes = new List<Node>();
var node = begin;
while (node != end)
{
nodes.Add(node);
var next = node.Children[new Random().Next(4)];
node = next;
}
nodes.Add(end);
return nodes;
}
但有时,Random 无法按预期工作。“new Random().Next(4)”不断生成 0。因此它始终是第一个子节点被选中,并且生成了一个非常长的重复序列,如 node1->node2->node1->node2... 并最终生成发生内存不足异常。
有没有办法让 Random 类正常工作?