タグ付けされた質問 「math」

数学には、プログラム内の数値の操作が含まれます。一般的な数学の質問については、[math.stackexchange.com](https://math.stackexchange.com/)で質問してください。注:浮動小数点計算の予期しない結果に関する質問の場合は、最初に[浮動小数点演算は壊れていますか?](https://stackoverflow.com/q/588004/1679849)をお読みください。


21
C / C ++に標準の符号関数(signum、sgn)はありますか?
負の数に対して-1を返し、正の数に対して+1を返す関数が必要です。 http://en.wikipedia.org/wiki/Sign_function 自分で作成するのは簡単ですが、標準ライブラリのどこかにあるはずです。 編集:具体的には、フロートで機能する関数を探していました。
409 c++  c  math 

6
整数が既知の値のセットを持つ2つの整数(両端を含む)の間にあるかどうかを判断する最速の方法
x >= start && x <= endCまたはC ++ よりも整数が2つの整数の間にあるかどうかをテストするより速い方法はありますか? 更新:私の特定のプラットフォームはiOSです。これは、ピクセルを特定の正方形の円に制限するボックスぼかし関数の一部です。 更新:受け入れられた回答を試した後、通常のx >= start && x <= end方法よりも1行のコードで桁違いに高速化しました。 更新:XCodeからのアセンブラーを使用した前後のコードは次のとおりです。 新しい方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 


9
PythonでN秒をdatetime.timeに追加する標準的な方法は何ですか?
datetime.timePythonで値が与えられた場合、整数の秒数を追加する標準的な方法があるので、たとえば11:34:59+ 3 = 11:35:02になりますか? これらの明白なアイデアは機能しません: >>> datetime.time(11, 34, 59) + 3 TypeError: unsupported operand type(s) for +: 'datetime.time' and 'int' >>> datetime.time(11, 34, 59) + datetime.timedelta(0, 3) TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta' >>> datetime.time(11, 34, 59) + datetime.time(0, 0, 3) TypeError: unsupported operand type(s) for +: …
369 python  datetime  time  math 

30
N以下のすべての素数をリストする最速の方法
これは私が思いつく最高のアルゴリズムです。 def get_primes(n): numbers = set(range(n, 1, -1)) primes = [] while numbers: p = numbers.pop() primes.append(p) numbers.difference_update(set(range(p*2, n+1, p))) return primes >>> timeit.Timer(stmt='get_primes.get_primes(1000000)', setup='import get_primes').timeit(1) 1.1499958793645562 さらに速くできますか? このコードには欠陥があります。numbersは順序付けられていないセットであるnumbers.pop()ため、セットから最小数を削除する保証はありません。それにもかかわらず、それはいくつかの入力番号に対して(少なくとも私にとっては)機能します: >>> sum(get_primes(2000000)) 142913828922L #That's the correct sum of all numbers below 2 million >>> 529 in get_primes(1000) False >>> 529 in …

7
「エントロピーと情報獲得」とは何ですか?
私はこの本(NLTK)を読んでいて、混乱しています。 エントロピーは次のように定義されます。 エントロピーは、各ラベルの確率とその同じラベルの対数確率の合計です テキストマイニングに関してエントロピーと最大エントロピーをどのように適用できますか?誰かが私に簡単でシンプルな例(ビジュアル)を教えてくれますか?

15
整数除算の結果を切り上げる方法は?
特に、C#やJavaなどの言語を使用している場合に、ページネーションコントロールを表示する方法について考えています。 ページごとにyのチャンクで表示するxアイテムがある場合、いくつのページが必要になりますか?
335 c#  java  math 


19
10進数を2進数で正確に表現できないのはなぜですか?
浮動小数点表現についてSOに投稿された質問がいくつかあります。たとえば、10進数0.1には正確な2進数表現がないため、==演算子を使用して別の浮動小数点数と比較するのは危険です。浮動小数点表現の背後にある原理を理解しています。 私が理解していないのは、数学的な観点から、小数点の右側の数値が左側の数値よりも「特別」である理由です。 たとえば、61.0という数値は、任意の数値の整数部分が常に正確であるため、正確なバイナリ表現になります。しかし、6.10という数値は正確ではありません。私がしたことは、小数点を1桁移動することだけでしたが、突然、ExactopiaからInexactvilleに移動しました。数学的には、2つの数値の間に本質的な違いがあってはなりません。それらは単なる数値です。 それとは対照的に、小数部を反対方向に1桁動かして610を生成しても、Exactopiaのままです。私はその方向(6100、610000000、610000000000000)に進むことができますが、それらはまだ正確です。ただし、小数がしきい値を超えるとすぐに、数値は正確ではなくなります。 どうしたの? 編集:明確にするために、IEEEなどの業界標準の表現についての議論は避け、数学的に「純粋な」方法であると私が信じるものに固執したいと思います。基数10では、位置の値は次のとおりです。 ... 1000 100 10 1 1/10 1/100 ... バイナリでは、次のようになります。 ... 8 4 2 1 1/2 1/4 1/8 ... また、これらの数に任意の制限はありません。位置は左と右に無制限に増加します。



26
「if」ステートメントが多すぎますか?
次のコードは、私が必要とする方法で機能しますが、醜い、過度な、または他の多くのものです。私は数式を見て、いくつかの解決策を書こうとしましたが、結局同じくらいの量のステートメントになります。 この例で私に利益をもたらすような数式はありますか、またはステートメントが受け入れられる場合は16ですか? コードを説明すると、それは一種の同時ターンベースのゲーム用です。2人のプレーヤーにはそれぞれ4つのアクションボタンがあり、結果は配列(0〜3)から取得されますが、変数「1」と「2」はこれが役立つ場合は何かを割り当てました。結果は、0 =どちらにも勝利せず、1 = p1に勝利し、2 = p2に勝利し、3 =両方に勝利します。 public int fightMath(int one, int two) { if(one == 0 && two == 0) { result = 0; } else if(one == 0 && two == 1) { result = 0; } else if(one == 0 && two == 2) { …

10
C / C ++での整数除算の高速上限
与えられた整数値xとy、CとC ++は両方ともq = x/y、等価の浮動小数点の床を商として返します。代わりに天井を返す方法に興味があります。たとえば、ceil(10/5)=2およびceil(11/5)=3。 明らかなアプローチには、次のようなものが含まれます。 q = x / y; if (q * y < x) ++q; これには、追加の比較と乗算が必要です。そして私が見た(実際に使用された)他の方法は、floatまたはとしてキャストすることを含みdoubleます。追加の乗算(または2番目の除算)と分岐を回避し、浮動小数点数としてのキャストを回避するより直接的な方法はありますか?
262 c++  c  algorithm  math 

23
ポリゴンポイントのリストが時計回りであるかどうかを確認する方法は?
ポイントのリストがある場合、それらが時計回りの順序であるかどうかをどのようにして見つけますか? 例えば: point[0] = (5,0) point[1] = (6,4) point[2] = (4,5) point[3] = (1,5) point[4] = (1,0) それは反時計回り(または一部の人にとっては反時計回り)であると言うでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.