リンクリストから均一なランダム要素を取得するにはどうすればよいですか?リスト の長さを数え、あなたが数えているときに、ランダムな要素を生成します。リスト のランダム要素%の長さが0の場合は、その要素を選択します。アルゴリズム - 一様ランダム要素リンクリスト
-3
A
答えて
1
要素の選択を開始する前に、リストの長さが最初に必要です。したがって、平均1.5回の繰り返しが必要です。
最初はリストの長さを取得するためのものです。 [0 ... 1]の乱数にリストの長さを乗じて切り捨てます。 それはあなたが得なければならないインデックスです(あなたは別の繰り返しのために行く必要があります)。
int n = list.size() // Returns length of list
int index = (int) (random_value() * n); // random_value returns a value between 0.0 and 1.0
int* node = list.start() // goto start of list
for (int iter = 0; 0 < n; n++)
node = node->next() // Goto next node
return node
+0
私がリストをたどる間は、各ノードにランダムな要素を生成する必要があります。その後、計算(ランダム要素の長さ)== 0を使用します。 – exlux15
+0
いいえ、私は答えに書いています。 –
関連する問題
- 1. 不明な長さのリンクリストの一様ランダム要素をどのように選択しますか?
- 2. 交換による一様ランダム選択
- 3. 一様ランダム置換を生成する
- 4. スワップ要素二重リンクリスト
- 5. O(1)の複雑さを持つ単一のリンクリストの1つの要素を削除するアルゴリズム
- 6. 最大要素。アルゴリズム
- 7. アルゴリズム - 入力要素
- 8. C - 単一リンクリストから要素を削除する
- 9. 一様分布のランダム可変長コード番号
- 10. ランダム番号アルゴリズム
- 11. ランダム化アルゴリズムが
- 12. Cのリンクリストの逆アルゴリズム
- 13. 二重リンクリストでアルゴリズムをソート
- 14. 2リンクリストの要素を新しいリンクリストにコピーするには
- 15. リストからN個のランダム要素を選択するためのアルゴリズム C#
- 16. リンクリストに要素リストを追加する
- 17. は、リンクリストの最初の要素
- 18. リンクリストから要素を削除する
- 19. 循環リンクリストのインデックスの要素
- 20. ランダムな要素(座標)
- 21. jQueryの要素をランダムに
- 22. リストからランダムな要素
- 23. ランダム化プリムのアルゴリズム
- 24. 単一リンクリストに2つの要素しかない場合の最後の要素の削除
- 25. Javaの遺伝的アルゴリズムのための一様なクロスオーバー
- 26. C - 単一リンクリストの最初と最後の要素を交換する
- 27. 頭と尾の参照を使用した単一リンクリストの削除要素
- 28. 各パスでランダムな一様なint分布を減らす
- 29. ランダムな分布を持つ一様分布
- 30. Swift同様の要素配列
ゼロ質問:擬似コードで
。 –
std :: listについてお読みください。それはジェネリックプログラミングであなたを助けます。サイズを返す関数があります。 – CyberGuy