আমি আমার অ্যারে আইটেমগুলি স্ক্যাম্বলড করতে চাই। এটার মতো কিছু:
[1,2,3,4].scramble => [2,1,3,4]
[1,2,3,4].scramble => [3,1,2,4]
[1,2,3,4].scramble => [4,2,3,1]
এবং তাই এলোমেলোভাবে
আমি আমার অ্যারে আইটেমগুলি স্ক্যাম্বলড করতে চাই। এটার মতো কিছু:
[1,2,3,4].scramble => [2,1,3,4]
[1,2,3,4].scramble => [3,1,2,4]
[1,2,3,4].scramble => [4,2,3,1]
এবং তাই এলোমেলোভাবে
উত্তর:
এখন অন্তর্নির্মিত:
[1,2,3,4].shuffle => [2, 1, 3, 4]
[1,2,3,4].shuffle => [1, 3, 2, 4]
!
তবে কলটি রদবদলের পরে একটি যুক্ত করুন । !
এলোমেলো অ্যারে ছাড়া ফিরিয়ে দেওয়া হয় এবং একটি কার্যভারের জন্য পাকা হয়।
রুবি ১.৮..6 এর জন্য (এতে অন্তর্নির্মিত ঝাঁকুনি নেই):
array.sort_by { rand }
sort_by
ফাংশন জাভাস্ক্রিপ্টের বাছাই ফাংশন (বা সেই বিষয়ে রুবির সাজানোর ফাংশন) এর মতো কাজ করে না, যা কেবল গণ্য সংখ্যাটি শূন্যের চেয়ে কম, শূন্য বা শূন্যের চেয়ে বড় কিনা তা যত্নশীল। পরিবর্তে sort_by
প্রতিটি আইটেমের জন্য গণিত মান মনে রাখে এবং তারপরে সেই মান অনুসারে আইটেমগুলি বাছাই করে। সুতরাং এই ক্ষেত্রে প্রতিটি আইটেম একটি এলোমেলো সংখ্যা নির্ধারিত হয় এবং তারপরে অ্যারেটি এলোমেলো সংখ্যা দ্বারা সাজানো হয়।
রুবি ১.৮. for এর জন্য কেবল অ্যারের জন্য ব্যাকপোর্টস রত্ন থেকে কোড । রুবি ১.৮..7 বা তার থেকেও উচ্চতর অন্তর্নির্মিত।
class Array
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
def shuffle
dup.shuffle!
end unless method_defined? :shuffle
# Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
def shuffle!
size.times do |i|
r = i + Kernel.rand(size - i)
self[i], self[r] = self[r], self[i]
end
self
end unless method_defined? :shuffle!
end
রুবি আরও বৈশিষ্ট্য এক্সটেনশন গ্রন্থাগার টি Random
মডিউল যা সহ দরকারী পদ্ধতি প্রদান করে shuffle
এবং shuffle!
সহ কোর শ্রেণীর একটি গুচ্ছ Array
, Hash
এবং String
।
আপনি যদি রেলগুলি ব্যবহার করছেন তবে অবশ্যই সাবধান থাকুন যেহেতু আমি যেমন বানরপাখি রেলগুলির সাথে সংঘর্ষ করেছিল তাতে কিছু কদর্য সংঘর্ষের অভিজ্ঞতা পেয়েছি ...