【ゲームで、この処理ってどーやってんの?】at GAMEDEV
【ゲームで、この処理ってどーやってんの?】 - 暇つぶし2ch34:名前は開発中のものです。
18/05/31 21:24:38.84 afJ9Cg6n.net
>>29
ごめん、言葉だけだとよくわからん。
もし29に書いてあるようなことを俺がやるとすると、こんな感じかなぁ。。。
(C#失礼)
static T SelectByRandom<T>(Dictionary<T, int> dic) {
 //荷重合計までの乱数を発生
 int n = MyRandom(dic.Sum(x => x.Value));
 //乱数に応じたオブジェクト選択
 foreach(var kv in dic) {
  if ((n -= kv.Value) < 0) {
   //選択
   return kv.Key;
  }
 }
 throw new Exception();//エラー
}
実際はDictionary使わないし、関数化もしないけど、とりあえずイメージで。
ループ回して乱数値に応じた選択をするのが、俺的に定番。
コンパイラ通してないのでエラーでるかもw
呼び出し方はこんな感じ
//準備
var weightDic = new Dictionary<MyClass, int>();
weightDic[objA] = 30;//30の確率でobjAを選択
weightDic[objB] = 90;//90の確率でobjBを選択
weightDic[objC] = 40;//40の確率でobjCを選択
//選択そして実行
var selectedObject = SelectByRandom<MyClass>(weightDic);


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch