重みでターゲットを選択するための Java アルゴリズム

重みでターゲットを選択するための Java アルゴリズム

私は現在、軍事司令官システムに取り組んでいますが、これは多くのユースケースがあるかなり複雑なシステムです。開発には 2 週間が割り当てられましたが、開発だけで 1 週間あれば十分で、残りの時間はデバッグに使用されました。このシステムに関して、私は重みに関する部分にもっと興味があります。各武将は出現確率が異なり、また各武将は重みの異なる複数の成長値に対応しています。ここには重みに関係する箇所が 2 箇所あります。最初は非常に巧妙なアルゴリズムを書いたと思っていましたが、今振り返ってみるといかに非効率的だったかがわかります。将軍の数は不確定であり、その重みの合計も不確定であるため、最初は少し難しいと感じるかもしれません。解決策はあるが、十分ではないように感じます。

重みの合計が合計であると仮定して、この範囲内で乱数を生成します。この乱数が配置されている間隔を観察することで、どの重み範囲内に配置されているかを判断できます。

例えば、A、B、Cという3人の将軍がいて、それぞれの出現確率は30%、40%、30%です。まず、乱数を生成します。ここでの合計重みは 100 で、1 ~ 30、31 ~ 70、71 ~ 100 の 3 つの区間に分割されます。自然乱数の範囲も 100 以内です。乱数が49であれば、49は31~70の範囲内にあることは明らかなので、ランダムに生成された将はBであると判定できます。これはアイデアですが、アルゴリズムを使用してこれをどのように実装するのでしょうか?

特定の状況では、最も簡単な方法は次のとおりです。

  1. int rand = 49 ; //乱数、ここでは与えられた値であると仮定 
  2.  整数A = 30 ;
  3.  整数B = 40 ;
  4.  整数C = 30 ;
  5.   (rand> 0 && rand<=A)の場合{
  6.   Aを返します
  7. }
  8.  それ以外  (rand>A && rand<=A+B)の場合{
  9.   Bを返します
  10. }
  11.  それ以外  (ランダム>A+B && ランダム<=A+B+C)の場合{
  12.   Cを返します
  13. }

しかし、前述のように、重みの合計は不確実であり、将軍の数も不確実であるため、これは間違いなく選択肢ではありません。

そこで私は簡単な解決策を思いつきました。

  1. int rand = 49 ; //乱数 
  2. 整数合計 = 0 ;
  3. List<武将> list = new ArrayList<武将>(); //これは軍の将軍のリストであると仮定します 
  4. ( int i = 0 ;i<list.size();i++) {
  5. sum = list.get(i).getWeight(); //将軍の出現確率 
  6. ランダム<=合計の場合{
  7. return i; //一般に対応するインデックスを返す 
  8. }
  9. }

これは良い考えだろうか?それとも何か問題があるのでしょうか?

オリジナルリンク: http://www.cnblogs.com/wuchen/archive/2012/02/23/2365484.html

【編集者のおすすめ】

  1. 一般的な Java ファイルアップロードおよびダウンロードコンポーネントの設計と実装
  2. Java の時刻と日付の API を書き直してみましょう。
  3. Javaでの自動ボックス化とアンボックス化について話す
  4. Java EE パフォーマンステストとチューニングを実行する方法
  5. Java 8 の新機能の詳細な解説

<<:  Appleのアプリランキングアルゴリズム調整の裏側:ランキング管理企業が一夜にして沈黙

>>:  中国でApp Storeのランキング操作を禁止しアルゴリズムを調整

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

クイックソートアルゴリズムの実装と最適化

[[385051]]この記事はWeChatの公開アカウント「Beta Learns JAVA」から転...

...

アンドリュー・ン氏との独占インタビュー: 今後 10 年間の AI、ハードウェア優先からデータ優先へ

現在の仕事に飽きて方向転換したいと思ったことはありませんか?もしそうなら、あなたは決して一人ではあり...

2022年のNature年次指数が発表され、最も急成長した50の機関のうち31は中国の機関です。

​たった今、2022年のNature年次インデックスレポートが発表されました。上位50の研究機関のう...

人工知能はますます急速に発展しています。将来、人工知能は人間に取って代わるのでしょうか?

人工知能の発展は人類の進化に似ていますが、そのプロセスはより短いものです。人間は自らの知恵を駆使して...

人工知能がハイパー監視を推進

私たちは通常、監視カメラを、見方によっては私たちを監視する、あるいは私たちに代わって監視するデジタル...

協働ロボットは従来のロボットとどう違うのでしょうか?

協働ロボットは従来のロボットとどう違うのでしょうか? [[418520]]本質的には、協働ロボットと...

ディープラーニングアルゴリズムの全貌:その正しさを理論的に証明する

論文アドレス: https://arxiv.org/abs/1705.07038この論文では、ディー...

アルゴリズム図: スタック内の最小値を見つけるにはどうすればよいでしょうか?

[[345846]]この記事はWeChatの公開アカウント「Java Chinese Commun...

4 つの主要ビジネス分野における業界に関するインテルの詳細な洞察、アプリケーション事例、革新的な製品とソリューションの解釈 | Intel Vision

ポストパンデミックの時代において、在宅勤務によって従業員の生産性を最大限に引き出すにはどうすればいい...

2023年ゴードン・ベル賞発表:最先端のスーパーコンピューターによる「量子レベルの精度」の材料シミュレーションが受賞

ACM ゴードン・ベル賞は 1987 年に設立され、計算機協会によって授与されます。スーパーコンピュ...

AI、IoT、5Gの先進技術の背後にあるもの

代償なくして勝利はない。しかし、私たちはしばしばこのことを忘れ、即座の勝利を要求します。これは、世界...

NSA、RSA暗号化アルゴリズムに2つ目のバックドアを追加

ロイター通信は12月、米国国家安全保障局(NSA)が、携帯端末で広く使用されている暗号化技術にバック...

孫玄: Zhuanzhuan が AI エンジニアリング アーキテクチャ システムを構築する方法

[51CTO.comより引用] 2018年5月18日〜19日、51CTO主催のグローバルソフトウェア...