আমি যখন পাইথন ৩.৮.০ তালিকাকে একটি সেটে রূপান্তর করি, ফলাফল সেট অর্ডারিং * খুব তুচ্ছভাবে কাঠামোগত হয়। ছদ্ম-এলোমেলো তালিকা থেকে এই কাঠামোটি কীভাবে নেওয়া হচ্ছে?
আমি যে পরীক্ষা চালাচ্ছি তার অংশ হিসাবে, আমি একটি এলোমেলো সেট তৈরি করছি। আমি অবাক হয়ে দেখলাম যে সেটটি প্লট করা হঠাৎ করে সেটে অপ্রত্যাশিত লিনিয়ার কাঠামো দেখিয়েছিল। সুতরাং দুটি বিষয় আমাকে বিস্মিত করছে - একটি সেট ফলাফলে রূপান্তর কেন একটি ক্রম * থাকে যা এই কাঠামোটি হাইলাইট করে শেষ করে; এবং, কিছুটা হলেও সিউডো-এলোমেলো সেটটিতে কেন এই "লুকানো" কাঠামো আছে?
কোড:
X = [randrange(250) for i in range(30)]
print(X)
print(set(X))
উদাহরণস্বরূপ, যা ফলাফল
[238, 202, 245, 94, 111, 106, 148, 164, 154, 113, 128, 10, 196, 141, 69, 38, 106, 8, 40, 53, 160, 87, 85, 13, 38, 147, 204, 50, 162, 91]
{128, 8, 10, 141, 13, 147, 148, 154, 160, 162, 164, 38, 40, 50, 53, 196, 69, 202, 204, 85, 87, 91, 94, 106, 238, 111, 113, 245}
উপরের তালিকার একটি প্লট ** মোটামুটি এলোমেলো মনে হচ্ছে, যেমনটি প্রত্যাশিত:
যেখানে সেট প্লট করা (যেমন এটি আউটপুটে আদেশ করা হয়েছে) সেটে উপস্থিত কাঠামো প্রদর্শন করে:
এই আচরণটি আমার মেশিনে 100% সামঞ্জস্যপূর্ণ (নীচে আরও উদাহরণগুলি) উপরের কোডটিতে ব্যবহৃত 250 এবং 30 মানগুলির সাথে (আমি ব্যবহৃত উদাহরণটি চেরি বাছাই করা হয়নি - এটি আমার শেষ দৌড়ে এসেছিল)। এই মানগুলি টিউন করার ফলে মাঝে মাঝে কিছুটা আলাদা কাঠামো হয় (উদাহরণস্বরূপ তিনটি পাটিগণিত অগ্রগতির একটি উপসেট *** দুটি পরিবর্তে)।
এটি কি অন্য মানুষের মেশিনে পুনরুত্পাদনযোগ্য? অবশ্যই, এই জাতীয় কাঠামোটি বিদ্যমান নয় এমন একটি ছদ্ম-এলোমেলো সংখ্যা জেনারেশনের সূচক বলে মনে হয় তবে কোনও সেটকে রূপান্তর করা এই কাঠামোর কোনও অর্থে কীভাবে 'এক্সট্রাক্ট' করবে তা ব্যাখ্যা করে না। আমি যতটুকু অবগত আছি, সেখানে কোনও আনুষ্ঠানিক গ্যারান্টি নেই যে একটি সেট অর্ডারিং (যখন তালিকা থেকে রূপান্তরিত হয়) নির্বিচারক (এবং এমনকি তা সত্ত্বেও, পটভূমিতে কোনও অত্যাধুনিক অর্ডিংও হচ্ছে না)। তাহলে কেমন হচ্ছে ?!
(*): আমি জানি, সেটগুলি সীমানাবিহীন সংগ্রহসমূহ, তবে আমার অর্থ "অর্ডার করা" এই অর্থে যে বয়ানটি কল করার printসময় সেটটি কোনও ক্রমে আউটপুট হয় যা ধারাবাহিকভাবে অন্তর্নিহিত সেট কাঠামোটি হাইলাইট করে।
(**): এই প্লটগুলি ওল্ফ্রাম আলফার। আরও দুটি উদাহরণ নীচে রয়েছে:
(***): 250 থেকে 500 এলোমেলো সংখ্যার পরিসর পরিবর্তন করার সময় দুটি প্লট:




