グラフがあります。各ノードには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;
}
ただし、ランダムが期待どおりに機能しない場合があります。「newRandom()。Next(4)」は0を生成し続けます。したがって、これは常に最初の子ノードが選択され、node1-> node2-> node1-> node2 ...のような非常に長い繰り返しシーケンスが生成され、最終的には生成されます。メモリ不足の例外が発生します。
Randomクラスを正しく機能させる方法はありますか?