2009-06-17 10 views
6

これはおそらく愚かで簡単な質問ですが、時には最も簡単なことが私にもっと問題を与えるようです。CまたはObjective Cでの数学の質問

この式は、私の目的CIでは、0から100

(200/23) * Abs(Mod(2987, 23) - 23/2) 

間の番号を与えることとしているが、このようにそれをコード化:

(200/23) * abs(2987 % 23) - (23/2); 

は不備式です(と与えるものではありません0と100の間の答え)、または私のコードが間違っていますか?私のモジュラスは私に正しい結果を与えていないようです。それは私に1つの整数を与えるべきではありませんか?

おかげ

+0

愚かな質問:これは浮動小数点数を返すことはないでしょう。 Objective Cでは動作が異なりますか? –

+0

何をやっているのか分かりませんが、乱数が必要な場合は 'arc4random()%100'となります。あなたはただ定数を書いて、それで終わることができます。 – pablasso

答えて

17

あなたのコードを客観Cで間違っている...

(200/23) * abs(2987 % 23) - (23/2); 

はちょうど73.9である

(200/23) * abs((2987 % 23) - (23/2)); 

であるべき。

ただし、この式も正しくありません。値の範囲は0〜100です。%23の範囲は0〜22であるため、現在の数式は0になりません。/2とし、その絶対値を.5(11-11.5と12-11.5)とする。この例では22が理想的な数になります。

また、23/2を減算すると、不均等な分布が得られます.100/22でモジュレーションを掛け合わせると、より良い結果が得られます。あなたが何をしようとしているのかを知るのに役立ちます。

+3

実際、彼はちょうど73.9130434783: - Pと書くことができました。 –

+0

完璧!私はそれが何かシンプルだったことを知った...ありがとう。 – Xcoder