0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pythonのlambdaで再帰処理

Last updated at Posted at 2017-12-05

pythonのlambda
n%で「当たり」とした時に当たりまで何回失敗したかを計測するlambda関数を作ってみる。

lambda.py
from random import random as r
count = lambda i : (lambda i, f: f(i, 1, f))(i, lambda i, c, f: f(i, c+1, f) if r() > i else c)

print(count(0.1)) # 10%が成功するまでの回数

解説
i = %を数値表記したもの
c = 成功するまでのカウンタ
f = 再帰関数
横に長いので分割

t1.py
lambda i : (lambda i, f: f(i, 1, f)) #A(関数)
(i, lambda i, c, f: f(i, c+1, f) if r() > i else c) #B(引数)
  1. count(n)で呼び出した際にAの引数iへnが渡される。
  2. Bの第一引数が1.から受け取ったiが渡される。
  3. Bの第二引数が再帰関数としてfに渡される。
  4. この2つの引数をAの中にあるlambdaへ渡す。
  5. Aの中のlambdaは2.と3.の引数を受け取り再帰関数を実行する。
  6. rand()がnを下回るまでcを加算しながら繰り返す。

みたいな感じだと思う。
数学は苦手だから本当に10%までに失敗した計測できてるかはあんまわからない。ごめんなさい。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?