go
の slice
からランダムな値を選択する方法はわかります:
しかし、slice
からランダムな項目を選択し、それを slice
の一方の端にバイアスするにはどうすればよいでしょうか?私のユースケースでは、append()
を使用して時間の経過とともに増加する slice
を作成します。私の理解では、最新の項目は slice
の右側に追加されると思います。 slice
からランダムな項目を選択し、slice
の最新のメンバーを優先する関数を作成したいと考えています。私の最初の推測は、rand.normfloat64()
経由で 正規分布
を使用することですが、これを達成するためにそれをどのように使用できるか、またそれを使用できるかどうかはわかりません。
この関数は、slice
から任意の項目を選択できる必要がありますが、slice
に追加された新しい項目をより高い頻度で選択する必要があります。
正規分布に満足していると仮定すると、rand.normfloat64() を使用できます。配列に項目が 20 個ある場合:
リーリーは、リストの先頭に向かって重み付けされた数値を生成します。そして### リーリー
は、リストの最後に向かって重み付けされた数値を生成します。これは、サンプルのランダムな分布を示す例です。 モバイル プレイグラウンド:
https://www.php.cn/link/34ff028fc02b773b8885b59aee142e60 リーリー
出力例:[86 92 76 80 73 69 60 69 58 51 47 38 44 30 29 24 19 27 18 10]
ただし、ランダム化されているため、最後尾のアイテムをすべて入手することもできます...
前半の数値が左半分の数値の 10 倍であるステップ関数が必要な場合は、2 つの乱数を使用するだけです。
リーリー
go プレイグラウンドの例:https://www.php.cn/link/d5c82d99f0edb85fc94ffa4204146aad リーリー
出力例[96 92 89 89 88 78 95 86 83 98 15 10 15 10 10 12 4 11 11 8]
以上がGo を使用してスライスの一端に偏ったアイテムをスライスからランダムに選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。