3

(注: プロジェクトは Python です。)

画面に表示して操作したい多くのオブジェクトがあるシミュレーションを実行しています。各オブジェクトを特定する方法が必要です。なぜなら、オブジェクトは場所から場所へと突然移動するため、どのオブジェクトがどこに移動したかを追跡できるようにしたいからです。

私が考えているのは、すべてのオブジェクトに「個性」を生成することです。いくつかの色と英語の名前を GUI のオブジェクト表現として配置します。これらの色と名前を作成するためにハッシュ関数が使用されると考えましたが、ハッシュ関数を使用したことはありません。

やりたいことはどうすればいいの?

4

1 に答える 1

2

uuid を使用します (Python のモジュール uuid >= 2.5)。

バージョン 4 のこの uuid は、定義により、すべてのフィールド (1 つを除く) でランダムです。

>>> uuid.uuid4()
UUID('9d477dc7-a986-4e3d-aa4f-6e57f690be78')

フィールドを適切に分解して、色または名前を作成できます (名前のバケットを特定のフィールドにマッピングすることにより)。もちろん、ハッシュを制限しています (本当の ID は常に uuid です) が、視覚的な目的ではそれで十分です。たとえば、最初の 3 つのオクテットを使用して色 #9d477d を生成し、残りのオクテットc7を使用して 256 のセットから 1 つの名前を選択できます。

あまりにも醜い色になってしまった場合は、代わりに HSV で作業し、彩度と値を特定のレベルにクランプできます。繰り返しますが、これによりハッシュがさらに制限されます (ただし、結局のところ、色空間はすでにかなり制限されています)。

于 2009-11-26T07:35:36.940 に答える