【WTR様により解決済み】(Math.random() * 3) + 1について

アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: (Math.random() * 3) + 1について

投稿記事 by WTR »

ダメージ計算式は Math.floor ではなく Math.round 処理が入っていました。
よく見たわけじゃないですが端数切捨てではなく四捨五入なので超えることがありそうですね。

とはいえお手上げ…というほどの話ではなく

コード: 全て選択

Math.floor(Math.random() * 5) + 16)
とすればいいだけではないでしょうか。
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
nekunyan
記事: 22
登録日時: 2021年5月27日(木) 15:34

Re: (Math.random() * 3) + 1について

投稿記事 by nekunyan »

WTR さんが書きました:ダメージ計算式は Math.floor ではなく Math.round 処理が入っていました。
よく見たわけじゃないですが端数切捨てではなく四捨五入なので超えることがありそうですね。

とはいえお手上げ…というほどの話ではなく

コード: 全て選択

Math.floor(Math.random() * 5) + 16)
とすればいいだけではないでしょうか。
回答ありがとうございます

今その式でテストしたところ

”モンスター名”にダメージを与えられない

という風に出てしまいました
そのままコピーペーストしたので式の間違いはないと思うのですが・・・
アバター
WTR
記事: 625
登録日時: 2015年12月22日(火) 19:14

Re: (Math.random() * 3) + 1について

投稿記事 by WTR »

すみません、カッコが余計でした

コード: 全て選択

Math.floor(Math.random() * 5 + 16)
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
nekunyan
記事: 22
登録日時: 2021年5月27日(木) 15:34

Re: (Math.random() * 3) + 1について

投稿記事 by nekunyan »

WTR さんが書きました:すみません、カッコが余計でした

コード: 全て選択

Math.floor(Math.random() * 5 + 16)
回答ありがとうございます
そちらの式でダメージが通りました

何度かテストで使った感じでも
上限を超えて出ることはないので恐らく大丈夫だと思います

どこで式を使うかによって仕様が色々違うんですね
勉強になります

とても助かりました
ありがとうございます
ecf5DTTzl6h6lJj02
記事: 752
登録日時: 2018年12月23日(日) 13:55

Re: (Math.random() * 3) + 1について

投稿記事 by ecf5DTTzl6h6lJj02 »

WTR さんの書き込みで、解決していますが、
質問されたことに、回答しておきます。
nekunyan さんが書きました: 代わりに

Math.floor(Math.random() * (Max - Min + 1) + Min)

の式を使ってする場合は
誤差に左右されずに最小値と最大値を決めて
その間の乱数を出してくれるということでしょうか?
いいえ。
この場合でも、丸め誤差によって、本来出ないはずの上限値がでる可能性はあります。
WTRさんの検証結果のように、ほぼ、出ないと言っていいような確率ですが。
見た感じだと

Maxに最大値
Minに最小値

を入れればいいのでしょうか?

1~10にしたい場合は

Math.floor(Math.random() * (10 - 1 + 1) + 1)
合っています。 ((10-1+1) は 自身で計算できるはずなので計算したほうがいいと思いますが)
nekunyan
記事: 22
登録日時: 2021年5月27日(木) 15:34

Re: (Math.random() * 3) + 1について

投稿記事 by nekunyan »

ecf5DTTzl6h6lJj02 さんが書きました:WTR さんの書き込みで、解決していますが、
質問されたことに、回答しておきます。
nekunyan さんが書きました: 代わりに

Math.floor(Math.random() * (Max - Min + 1) + Min)

の式を使ってする場合は
誤差に左右されずに最小値と最大値を決めて
その間の乱数を出してくれるということでしょうか?
いいえ。
この場合でも、丸め誤差によって、本来出ないはずの上限値がでる可能性はあります。
WTRさんの検証結果のように、ほぼ、出ないと言っていいような確率ですが。
見た感じだと

Maxに最大値
Minに最小値

を入れればいいのでしょうか?

1~10にしたい場合は

Math.floor(Math.random() * (10 - 1 + 1) + 1)
合っています。 ((10-1+1) は 自身で計算できるはずなので計算したほうがいいと思いますが)
回答ありがとうございます

一つの答えを出すにも
様々な式があるのですね

まだまだわからないことだらけなので
教えていただいたことをうまく使っていけるようになりたいと思います

ありがとうございます
返信する

“MV:質問”に戻る