6

私はそれを理解せずに数回調べたトリッキーな質問があります。

いくつかの裏話:私は、プレイヤーが動物やモンスターなどと戦うテキストベースのRPGゲームを作成しています。これは、ラウンドごとに多数のヒットポイントを互いにヒットする他のゲームと同じように機能します。

問題:レベルや鎧などに応じて、phpのランダム関数を使用してヒットの最終値を生成しています。ただし、高い値(最大ヒット数など)は、低い値よりも少ない頻度で表示されるようにしたいと思います。

これは例です-グラフ:

グラフの例

PHPとrand-functionを使用してこのようなものを再現するにはどうすればよいですか?すべての数字を入力rand(1,100)すると、同じように選択される可能性があります。

私の考えはこれです:2次(または2次関数)を作成し、乱数(x)を使用して計算を行います。

これは私が望むように機能しますか?

質問は少しトリッキーです。詳細や詳細が必要な場合はお知らせください。

4

2 に答える 2

2

この美しい記事を見てください:http: //www.redblobgames.com/articles/probability/damage-rolls.html

サイコロの目と結果のパーセンテージを考慮したインタラクティブな図があります。これはあなたにとって非常に役立つはずです。

この種のローリング乱数に注意してください。

roll1 = rollDice(2,  12);
roll2 = rollDice(2,  12);
damage = min(roll1, roll2);

これはあなたが探しているものを与えるはずです。

于 2012-04-26T11:39:01.227 に答える
1

OK、これが私のアイデアです:

要素の配列があり(a,b,c,d)、そのうちの1つをランダムに選択しないとしましょう。ランダム要素インデックスを取得するためにaを実行rand(1,4)すると、すべての要素が同じように表示される可能性があります。(25%)

さて、この配列を取るとしましょう:(a,b,c,d,d)

ここにはまだ4つの要素がありますが、すべての要素が同じように表示されるわけではありません。

  • a、b、c:20%
  • d:40%

または、この配列を見てみましょう:

(1,2,3,...,97,97,97,98,98,98,99,99,99,100,100,100,100)

ヒント:この方法では、乱数生成アルゴリズムにバイアスをかけるだけでなく、実際に各アルゴリズム(または数値の範囲)の出現の望ましい確率を設定します。


だから、それは私がそれについて行く方法です:

1から100までの数字が必要な場合(より高い数字がより頻繁に表示される場合は、1から1000までの乱数を取得し、それをより広い範囲に関連付けます。例:

rand = 800-1000 => rand/10 (80->100)
rand = 600-800  => rand/9 (66->88)
...

またはそのようなもの。(あなたはあなたが想像するどんな数学演算、モジュロまたは何でも使うことができます...そしてあなたのアルゴリズムで遊ぶことができます)。私の考えを理解していただければ幸いです。

幸運を!:-)

于 2012-04-26T11:47:26.410 に答える