docs.unity3d.com
    目次を表示する/隠す

    Probability Sampling

    メニューパス : Operator > Logic > Probability Sampling

    Probability Sampling Operator は、ウェイトがケース選択の確立を制御する、switch/case 演算の一種を実行します。すべてのウェイトが等しい場合、この Operator は様々な出力値の一様分布を行います。

    img

    Operator 設定

    設定 説明
    Integrated Random (Inspector) Operator が乱数を生成するか、代わりにカスタムの乱数の入力を可能にするかを、指定します。
    Seed 乱数の範囲を定義します。詳細については、Random Number を参照してください。
    この設定は、Integrated Random を有効にしたときのみ表示されます。
    Constant 生成された乱数が定数かどうかを特定します。詳細については、Random Number を参照してください。
    この設定は、Integrated Random を有効にしたときのみ表示されます。
    Entry Count テストするケース数です。最大値は 32 です。

    Operator プロパティ

    Input Type 説明
    Weight 0 float 最初の値のウェイトです。他のウェイトと比べてこの値が大きいほど、Operator が最初の値を選択する確率が高まります。
    Value 0 設定可能 Operator が Weight 0 を選択した場合に、出力する値です。
    Weight 1 float 2 番目の値のウェイトです。他のウェイトと比べてこの値が大きいほど、Operator が 2 番目の値を選択する確率が高まります。
    Value 1 設定可能 Operator が Weight 1 を選択した場合に、出力する値です。
    Weight N float 他のケースを見るには、Entry Count を増やします。
    Value N 設定可能 他のケースを見るには、Entry Count を増やします。
    Rand float Operator がウェイトから値を選択する際に使う値です。これは 0 から 1 の間になります。このプロパティは、Integrated Random を無効にしたときのみ表示されます。
    Hash uint Operator が一定のランダム値を作成する際に使う値です。このプロパティは、Constant を有効にしたときのみ表示されます。
    Output Type 説明
    Output 設定可能 該当するケースエントリーが Input 値に等しい場合の値か、もしくは該当するものがなければ Default になります。

    Operator 設定

    ノードの設定は、ノードのヘッダーにある cog アイコンをクリックすると表示されます。

    プロパティ 説明
    Type この Operator が使う値の型です。このプロパティがサポートする型のリストについては、利用できる型 を参照してください。

    利用できる型

    Input 値と Output ポートには、以下の型を使うことができます。

    • Bool
    • int
    • Uint 
    • float
    • Vector2
    • Vector3
    • Vector4
    • Gradient
    • AnimationCurve
    • Matrix
    • OrientedBox
    • Color
    • Direction
    • Position
    • Vector
    • Transform
    • Circle
    • ArcCircle
    • Sphere
    • ArcSphere
    • AABox
    • Plane
    • Cylinder
    • Cone
    • ArcCone
    • Torus
    • ArcTorus
    • Line
    • Flipbook
    • Camera

    このリストには、生成された HLSL コードのローカル変数として割り当てることができないため、バッファまたはテクスチャに関連する型は含まれていません。

    詳細

    このサンプルコードは、この Operator の内部アルゴリズムを示しています。

    //Input
    
    float[] weight = { 0.2f, 1.2f, 0.7f };
    
    char[] values = { 'a', 'b', 'c' };
    
    //高さのプレフィックス合計を計算します
    
    float[] prefixSumOfWeight = new float[height.Length];
    
    prefixSumOfHeight[0] = weight[0];
    
    for (int i = 1; i < weight.Length; ++i)
    
        prefixSumOfHeight[i] = weight[i] + weight[i - 1];
    
    //ランダムな数を選びます [0, sum of all height]
    
    var rand = Random.Range(0.0f, weight[weight.Length - 1]);
    
    //確率標本抽出を評価します
    
    char r = 'z';
    
    for (int i = 0; i < weight.Length; ++i)
    
    {
    
        if (rand < prefixSumOfWeight[i] || i == weight.Length - 1)
    
        {
    
            r = values[i];
    
            break;
    
        }
    
    }
    
    //出力します
    
    Debug.Log("Result : " + r.ToString());
    
    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)