2

目標は、1..N からランダムに曲を選択し、N 曲の繰り返しなしで、iPod のように前後に反復できるようにすることです。ランダムな曲を保存するためにハッシュテーブルを使用しました。より良い方法はありますか?

4

2 に答える 2

4

これを行うための単純なアルゴリズムの 1 つは、N 曲すべてのリストから始めて、Fisher-Yates Shuffleのようなアルゴリズムを使用して配列要素をランダムにシャッフルすることです。これが完了すると、すべての曲をランダムな順序で並べ替えることができ、重複することはありません。リスト内の現在のインデックスを追跡している場合は、配列内を前後に移動するだけで、次と前を実装できます。

お役に立てれば!

于 2013-05-06T18:05:40.523 に答える
1

1 つの方法は、LCG ベースの疑似乱数ジェネレーターを使用して曲を選択することです。各ステップの歌 n+1 は (an+b)Mod 2^N です。LCG の周期が N を超えていることを確認します。LCG の逆数を使用して逆方向に反復します。

于 2013-05-06T18:05:53.777 に答える