Pluglog

Tkool Replay コメントは随時受け付けておりますので、古い記事でも遠慮なくお書きくださいませ。
Admin
TOP考察文 ≫ ランダムエンチャント オプション値の振れ幅について考える

ランダムエンチャント オプション値の振れ幅について考える

脱線ネタなんですけども、ランダムエンチャントでなにか能力値が決定される場合に、
例えば攻撃力+0~100 みたいに振れ幅があるとするじゃないですか

これをプログラム的に単純にrand(101) ってすると、
早い段階で+100のアイテムを拾える可能性も結構高いと思うんですよね
ようは「0」がでる確率も「100」がでる確率も一緒・・
でも、高い数値のアイテムはでにくい!みたいなのを表現したい場合もありますやんね!?

そんなときに使えるテクニック・・

rand(101) ** 2 / 100


乱数を2乗して、最大値が同じになるように割る こんな感じにすると・・
1のときは0で同じ、100のときは100×100=10000 ÷100となって、同じ100になるけれど・・
たとえば50のときは50×50=2500 ÷100 となって25に
つまり高い数値ほど出にくくなるということが実現できるわけです!

実際の計算結果の全パターンは以下の通り(小数は切り捨てになります)
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 3 3 4 4 4 5 5 6 6 7 7 8 9 9 10 10 11 12 12 13 14 15 16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 42 43 44 46 47 49 50 51 53 54 56 57 59 60 62 64 65 67 68 70 72 73 75 77 79 81 82 84 86 88 90 92 94 96 98 100

同じ101通りでも、小さい数がかたまってでやすくなるわけですね

20160814193637.png
グラフにするとこんな感じで、2乗の部分を3乗、4乗・・としていけば
その分カーブがきつくなって、高い数値はでにくくなってゆきます

またrand(101)ならば101通りなのでだいたい1%の確率で最高値がでるわけですが、
これもrand(1000)、rand(10000)・・などとしていけば、最高値がでる確率は絞られていき・・
天文学的な確率の激レア値オプションなんてのも作れて、非常に高いやりこみ度のランダム性が作れそうです

これのいいところはたった一つの式で定義できるというところでもありますね
バランスを変えたくなったときも、これをちょいっと変えればOK!
ちなみにランダムオプション以外にも、ランダムに出現する高レベルの敵なんてのにも使えますね

まあ今作にそれほどシビアな厳選性を組み込む予定はなかったんですが・・
オプション値をランダムにするのは、製造系のシステムを入れるとするとかち合うんすよね まあ製造も未定なんですけど
こういうのも面白そうだなーと思いつつ、余裕ができたら組み込んでみようかなあ

Comment








Trackback

Trackback URL