3

私のアルゴリズムでは、現在の整数 n がたまたま 0.1 の正の倍数の真数に最も近いかどうかを評価したいので、0.1、1.0、1.1、7.9、21.5 などです。

アンチログ?AntiLog(x) = 10 x

ここで逆対数を見つけるオンライン計算機を見つけました:http://ncalculators.com/number-conversion/anti-log-logarithm-calculator.htmしかし、Pythonや他のプログラミング言語でこれを行う例を見つけることができませんでした.

Python を使用して一連の数値の逆対数を見つけることができない場合は、プログラムに逆対数値のリストを格納することに頼る必要があります。コードでこれを行う方法。

更新: 最初の回答のコードで実行できたので、このコードは私がやろうとしていたすべてを完全に示しています:

#!/usr/bin/python
import sys
import math

for x in xrange(1, 1000000):
    target = round(math.log10(x),1)
    int_antilog = int(10**target+0.5) #fast round() alternative
    if (x == int_antilog):
        print 'do something at call ' + str(x)
4

2 に答える 2

5

Python には、必要な累乗を実行する累乗演算子があります。

def antilog(x):
    return 10 ** x

例:

>>> antilog(0.1)
1.2589254117941673
>>> antilog(3)
1000
>>> inputs = [0.1, 1.0, 1.1, 7.9, 21.5]
>>> outputs = [antilog(x) for x in inputs]
>>> print outputs
[1.2589254117941673, 10.0, 12.589254117941675, 79432823.47242822, 3.1622776601683794e+21]

好きな方法で四捨五入して整数に変換すれば、準備完了です。

于 2013-06-02T16:45:38.937 に答える
1
于 2013-06-02T17:40:05.163 に答える