回答編集履歴
2
レアケースとしてRandom.valueが1を出した場合、あるいは計算誤差による抽選漏れを考慮し、デフォルト値と条件を変更
test
CHANGED
@@ -124,7 +124,7 @@
|
|
124
124
|
|
125
125
|
var random = Random.value * this.weightSum;
|
126
126
|
|
127
|
-
var result =
|
127
|
+
var result = this.pool.Keys.FirstOrDefault();
|
128
128
|
|
129
129
|
foreach (var pair in this.pool)
|
130
130
|
|
@@ -136,7 +136,7 @@
|
|
136
136
|
|
137
137
|
integratedWeight += weight;
|
138
138
|
|
139
|
-
if (random < integratedWeight)
|
139
|
+
if (random <= integratedWeight)
|
140
140
|
|
141
141
|
{
|
142
142
|
|
1
単純に乱数と比率を比較するパターンを追記
test
CHANGED
@@ -34,6 +34,12 @@
|
|
34
34
|
|
35
35
|
this.rotSpeed = (Random.value - this.Ratio) < 0.0f ? 1.2f : -1.2f;
|
36
36
|
|
37
|
+
|
38
|
+
|
39
|
+
// 得られた値を計算に組み込む必要がなければ、こっちの方がシンプルですね
|
40
|
+
|
41
|
+
// this.rotSpeed = Random.value < this.Ratio ? 1.2f : -1.2f;
|
42
|
+
|
37
43
|
}
|
38
44
|
|
39
45
|
}
|