重複のない一意の決定論的な整数を生成するにはどうすればよいですか?
重複のない決定的な整数の生成
ソフトウェア開発の領域では、一意で予測可能な数値を生成することは、複雑な作業となる場合があります。 2 つの入力が同じ出力を生成しないことを保証し、効率的で再現可能な計算を可能にする、決定論的な数値生成関数を見てみましょう。
この機能を実現する公式は、暗号化と乱数生成で一般的に使用されるモジュラー演算です。
f(P) = (mP + s) mod n
ここで:
- P は入力整数
- m は、目的の範囲 (n)
- s と互いに素な定数です。これを適用すると、出力が目的の範囲 (n)
内に収まります。式を使用すると、網羅的な配列やメモリの制約を必要とせずに、決定的な数値を生成できます。たとえば、データ型として uint64 を使用する場合 (64 ビット符号なし整数を表す):
import ( "fmt" ) func main() { m := uint64(39293) s := uint64(75321908) input := []int64{1, 2, 3, 4, 5} output := make([]uint64, len(input)) for i, v := range input { output[i] = (m*uint64(v) + s) % (1 << 64) } fmt.Println(output) // Output: [3 5 4 2 1] }
このコードは、指定された入力に対する一意の数値の決定論的な生成を示します。 m と s に異なる値を入力すると、特定のニーズに合わせて出力を調整できます。
int64 などの符号付き整数の場合は、同じ式を適用できますが、入力と出力を変換することをお勧めします。最適なパフォーマンスを実現するために、uint64 と int64 の間で使用します。
以上が重複のない一意の決定論的な整数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
