ホームページ > データベース > mysql チュートリアル > リザーバーサンプリングを使用して MySQL データベースから加重行を選択する方法

リザーバーサンプリングを使用して MySQL データベースから加重行を選択する方法

Patricia Arquette
リリース: 2024-12-31 11:05:18
オリジナル
937 人が閲覧しました

How to Select a Weighted Row from a MySQL Database Using Reservoir Sampling?

データベースからの加重行の選択

データ管理では、テーブルから行をランダムに選択するのが一般的なタスクです。ただし、特定の行が選択される確率が高くなるように、選択プロセスに重み付けを適用する必要があるシナリオもあります。

この記事では、MySQL の重み付けリザーバー サンプリング方法を使用して、この問題の解決策を検討します。データベース。 id、content、weight の列を持つテーブルを考えてみましょう。重みを考慮しながら行をランダムに選択することを目的としています。

以下の SQL クエリは、重み付けされた貯留層サンプリング方法を利用してこれを実現します。

SELECT
  id,
  -LOG(RAND()) / weight AS priority
FROM
  your_table
ORDER BY priority
LIMIT 1;
ログイン後にコピー

このクエリは、次の優先度の値を計算します。各行は、乱数の負の自然対数をその重みで割ることによって計算されます。次に、行は優先度の昇順に並べ替えられ、優先度が最も低い (優先度の値が最も高い) 行が結果として選択されます。

この加重リザーバー サンプリング手法を利用することで、次から行をランダムに選択できます。選択の確率がその重みに比例するテーブル。これにより、重みの高い行が選択される可能性が高くなります。

以上がリザーバーサンプリングを使用して MySQL データベースから加重行を選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート