Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで乱数の与えられた方程式の期待値を見つけるプログラム


数nがあるとします。 x =rand()mod nについて考えてみます。ここで、rand()関数は、0〜10 ^ 100(両方を含む)の整数をランダムに均一に生成します。そして

$$ Y =\ sqrt {x + \ sqrt {x + \ sqrt {x + \ sqrt {x + ...}}}} $$

Yの期待値を見つける必要があります。nの値は1から5*10^6の範囲になります。

したがって、入力がn =5の場合、出力は1.696

になります。

これを解決するには、次の手順に従います-

  • エラー:=2235.023971557617
  • max_n:=5 * 10 ^ 6
  • pref:=リストには最初は1つの0が含まれています
  • 1〜5 * 10 ^ 6の範囲のiの場合は、
    • 挿入(設定の最後の項目+(1 +(4 * i + 1)^ 0.5)*設定の最後に0.5
  • n
  • return pref [n-1] / n
  • それ以外の場合、
    • 合計:=(4 *(n-1)+ 5)^ 1.5 / 6-5 ^ 1.5/6-エラー
    • ans:=0.5 +合計/(2 * n)
    • 回答を返す
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(n):
       err = 2235.023971557617
       max_n = 5 * 10**6
    
       pref = [0]
       for i in range(1, 5 * 10**6):
          pref.append(pref[-1] + (1 + (4 * i + 1)**0.5) * 0.5)
    
       if n < max_n:
          return pref[n - 1] / n
       else:
          total = (4 * (n - 1) + 5)**1.5 / 6 - 5**1.5 / 6 - err
          ans = 0.5 + total / (2 * n)
          return ans
    
    n = 5
    print(solve(n))

    入力

    5

    出力

    1.69647248786

    1. フィボナッチ数のPythonプログラム

      この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 −n番目のフィボナッチ数を計算するタスク。 フィボナッチ数のシーケンスFnは、以下に示す漸化式によって与えられます。 Fn =Fn-1 + Fn-2 シード値付き(標準) F0=0およびF1=1。 この問題には2つの解決策があります 再帰的アプローチ 動的アプローチ アプローチ1-再帰的アプローチ 例 #recursive approach def Fibonacci(n):    if n<0:       pri

    2. 複素数用のPythonプログラム

      正の数の実数の根は常に2つあります。たとえば、x2が25の場合、xは±5です。ただし、x2が-25の場合、実際のルートは存在しません。負の数の平方根は、絶対値の平方根に虚数単位j=√-1を掛けたものです。 したがって、√−25 =√25𝑋−1 =√25×√−1 =5j 複素数は、実数と虚数の成分で構成されます。 x+yjとして表されます。 xとyはどちらも実数です。 Yに虚数単位を掛けると、複素数の虚数部が形成されます。 例:3 + 2j、10-5.5J、9.55 + 2.3j、5.11e-6 + 4j Pythonには、組み込みの複雑なデータ型があります。複素数オブジェクトは、