আমি এই পাইথন কোডটি লিখেছি, এবং অবাক হয়েছি যদি এটি কখনও কখনও সহজভাবে শেষ হয় না (ধরে নিই যে আমাদের অসীম স্মৃতি / সময় রয়েছে এবং পুনরাবৃত্তির গভীরতার সীমা নেই)।
স্বজ্ঞাতভাবে আপনি মনে করেন এটি এটিকে বন্ধ করে দিয়েছে, যেহেতু কোনও এক সময় আপনার ভাগ্যবান হতে হবে , এবং যদি এটি শেষ না হয় তবে আপনার ভাগ্যবান হওয়ার জন্য অসীম সময় থাকে। অন্যদিকে, পুনরাবৃত্তির গভীরতা বাড়ার সাথে সাথে আপনাকে অবশ্যই আরও ভাগ্যবান হতে হবে।
import random
def random_tree():
if random.random() < 0.5:
return 0
return [random_tree() for _ in range(random.randint(1, 5))]
যদি random_tree
সর্বদা অবসান না হয় তবে কেন, এবং এটি সমাপ্ত হওয়ার কী সুযোগ রয়েছে?
আমি এটি ব্যবহার করে এটি গণনা করার চেষ্টা করেছি , যা এর ভয়াবহ অকেজোতা দেয় উত্তর ~ বা ... ।
সম্ভবত আরও জটিল, তবে আমার কাছে আকর্ষণীয়ও, সমাপ্তির সুযোগটি কী :
def random_tree(a, b):
if random.random() < a:
return 0
return [random_tree(a, b) for _ in range(random.randint(1, b))]
বা সিউডো কোডে:
random_tree(a, b) is a function that either:
- returns 0 with probability a
- returns a list containing the results of 1 to b
(uniformly chosen from this inclusive range) recursive calls
random_tree(a, b):
if rand() < a # rand() is a random real on [0, 1)
return 0
list = []
len = randint(1, b) # uniform random integer from 1 to b inclusive
do len times
append random_tree(a, b) to list
return list
random_tree(0.5, 5)
।