আপনি যদি রুবিতে র্যান্ডম সংখ্যা এবং স্ট্রিং তৈরি করতে শিখতে চান, তাহলে আপনি সঠিক জায়গায় আছেন।
কারণ এই নিবন্ধটি ঠিক এই বিষয়েই!
একটি এলোমেলো সংখ্যা দিয়ে আপনি একটি এলোমেলো উপাদান চয়ন করতে পারেন৷ একটি অ্যারে থেকে, একটি তালিকা থেকে একজন বিজয়ী চয়ন করুন, ডাইস রোল তৈরি করুন, ইত্যাদি৷
রুবিতে, বিভিন্ন বৈশিষ্ট্য সহ র্যান্ডম সংখ্যা তৈরি করার অনেক উপায় রয়েছে।
উদাহরণস্বরূপ…
র্যান্ড পদ্ধতিটি 3 উপায়ে ব্যবহার করা যেতে পারে:
- আর্গুমেন্ট ছাড়া,
rand
আপনাকে একটি ভাসমান বিন্দু দেয় 0 এবং 1 এর মধ্যে সংখ্যা (0.4836732493 এর মত) - একটি পূর্ণসংখ্যা সহ যুক্তি (
rand(10)
) আপনি 0 এবং সেই সংখ্যার মধ্যে একটি নতুন পূর্ণসংখ্যা পাবেন - একটি পরিসীমা সহ যুক্তি (
rand(1..20)
) আপনি পরিসরের শুরু এবং পরিসরের শেষের মধ্যে একটি পূর্ণসংখ্যা পাবেন
রুবিতে এলোমেলোতা তৈরি করার অন্যান্য উপায়গুলির মধ্যে রয়েছে:
- অ্যারে#শাফেল পদ্ধতি
- অ্যারে#নমুনা পদ্ধতি
- সিকিউর র্যান্ডম ক্লাস
আসুন কিছু উদাহরণ দেখি!
এলোমেলো সংখ্যা তৈরি করা হচ্ছে
আপনি র্যান্ড ব্যবহার করে রুবি র্যান্ডম সংখ্যা তৈরি করতে পারেন পদ্ধতি:
র্যান্ড ফ্লোটিং পয়েন্ট সংখ্যা তৈরি করে (0.4836732493
) যদি কোনো যুক্তি ছাড়াই ডাকা হয়।
আপনি rand
-এ একটি আর্গুমেন্ট পাঠাতে পারেন শূন্য থেকে শুরু করে একটি সংখ্যা তৈরি করতে (কিন্তু অন্তর্ভুক্ত নয় ) সেই সংখ্যা।
rand 100 > 41
রুবি র্যান্ডম সংখ্যা তৈরি করা সত্যিই সহজ, কিন্তু আপনার যদি শূন্য থেকে শুরু না করে একটি নির্দিষ্ট পরিসরে নম্বরের প্রয়োজন হয়?
কোন সমস্যা নেই!
আপনার যা প্রয়োজন তা পেতে আপনি একটি পরিসর ব্যবহার করতে পারেন।
উদাহরণ :
rand 200..500 > 352
সুরক্ষিত রুবি র্যান্ডম নম্বর
রেন্ড দ্বারা উত্পাদিত সংখ্যাগুলি একটি সাধারণ অ্যাপ্লিকেশনের জন্য যথেষ্ট হতে পারে…
…কিন্তু আপনি যদি সেগুলিকে নিরাপত্তার উদ্দেশ্যে ব্যবহার করতে চান—যেমন পাসওয়ার্ড রিসেট টোকেন তৈরি করা— তাহলে আপনাকে SecureRandom ব্যবহার করতে হবে , যা রুবি স্ট্যান্ডার্ড লাইব্রেরির অংশ।
SecureRandom ইউনিক্স সিস্টেমে /dev/urandom থেকে তার জেনারেটর তৈরি করে এবং উইন্ডোতে এটি CryptAcquireContext / CryptGenRandom API ব্যবহার করে।
এখানে একটি উদাহরণ আছে :
require 'securerandom' SecureRandom.random_number > 0.232
আপনি দেখতে পাচ্ছেন এটি অনেকটা rand
এর মত কাজ করে , আপনি সর্বোচ্চ নম্বরেও পাস করতে পারেন।
উদাহরণ :
SecureRandom.random_number(100) > 72
নিরাপদ র্যান্ডম অন্যান্য আউটপুট ফর্ম্যাট উপলব্ধ আছে৷
৷
hex
ব্যবহার করা হচ্ছে একটি হেক্সাডেসিমেল ফিক্সড-প্রস্থ স্ট্রিং তৈরি করতে পারে।
SecureRandom.hex > "87694e9e5231abca6de39c58cdfbe307"
রুবি 2.5 একটি নতুন পদ্ধতি চালু করেছে, যা এলোমেলো আলফানিউমেরিক স্ট্রিং তৈরি করে:
SecureRandom.alphanumeric > "PSNVXOeDpnFikJPC"
কিভাবে অ্যারে থেকে এলোমেলো উপাদান বাছাই করবেন
এখন:
আপনি একটি তালিকা থেকে একটি র্যান্ডম বাছাই পেতে চাইতে পারেন৷ .
আপনি এটি চেষ্টা করতে পারেন:
[5, 15, 30, 60].shuffle.first > 30
কিন্তু রুবির রয়েছে নমুনা পদ্ধতি যা এই কাজের জন্য আরও উপযুক্ত (এবং দ্রুততর):
[5, 15, 30, 60].sample > 5
আপনি নমুনা ব্যবহার করতে পারেন রেঞ্জের জন্য, এই কোডটি একটি এলোমেলো অক্ষর তৈরি করে:
('a'..'z').to_a.sample > b
N অনন্য উপাদান পেতে আপনি নমুনার জন্য একটি পূর্ণসংখ্যা যুক্তি পাস করতে পারেন অ্যারে থেকে:
[1,2,3].sample(2) > [1, 2]
যুক্তি হিসাবে একটি কাস্টম র্যান্ডম জেনারেটর পাস করাও সম্ভব:
[1,2,3].sample(random: SecureRandom)
রুবি র্যান্ডম স্ট্রিংস
চূড়ান্ত এলোমেলোতা অ্যাপ্লিকেশন হল একটি কাস্টম অক্ষর সেট সহ একটি র্যান্ডম স্ট্রিং তৈরি করা। এখানে কোড:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.join end puts generate_code(20)
এখানে কিছু জিনিস চলছে।
প্রথমত, আমরা রেঞ্জ ব্যবহার করে আমাদের অক্ষর সেট প্রস্তুত করি এবং তাদের অ্যারেতে রূপান্তর করি। তারপর আমরা Array.new
কল করার সুবিধা গ্রহণ করি একটি ব্লক দিয়ে, যা আমাদের একটি আকার n শুরু করতে দেয় ব্লক দ্বারা উত্পাদিত মানগুলির সাথে।
এই কোডটি নিম্নলিখিত ফর্মের স্ট্রিং তৈরি করবে: TufwGfXZskHlPcYrLNKg
.
আপনি আপনার প্রয়োজন অনুযায়ী অক্ষর সেট পরিবর্তন করতে পারেন।
র্যান্ডম নম্বর জেনারেটর সিডিং
আপনি যদি rand
এর মত একটি পদ্ধতি ব্যবহার করার সময় কোন সংখ্যাগুলি তৈরি করা হয় তা নিয়ন্ত্রণ করতে চান তারপর আপনি বীজ সেট করতে পারেন।
বীজ কি?
বীজ হল এমন একটি সংখ্যা যা এলোমেলো সংখ্যার একটি ক্রম শুরু করে।
সমস্ত উত্পন্ন সংখ্যা এই বীজ থেকে প্রাপ্ত .
এই কারণেই বীজের গুণমান সাধারণত এলোমেলো সংখ্যার একটি ভাল ক্রম তৈরি করার মূল চাবিকাঠি।
রুবি ইতিমধ্যেই আপনার জন্য এটির যত্ন নেয় (SecureRandom
ব্যবহার করুন যদি আপনার অতিরিক্ত নিরাপত্তার প্রয়োজন হয়), তবে কিছু পরিস্থিতিতে (বেশিরভাগই পরীক্ষা এবং ডিবাগিং) আপনি এই বীজটি নিজেই সেট করতে চাইতে পারেন৷
আপনি srand
দিয়ে এটি করতে পারেন পদ্ধতি।
এরকম :
Kernel.srand(1)
এই বীজের সাহায্যে আপনি জানতে পারবেন যে জেনারেটর আপনাকে ঠিক কোন সংখ্যা দিতে যাচ্ছে।
বীজ হিসেবে ১ নম্বরের জন্য :
Array.new(5) { rand(1..10) } # [6, 9, 10, 6, 1]
আপনি যদি আবার বীজটি 1 এ সেট করেন, তাহলে ক্রমটি শুরু হবে 6, তারপর 9, 10, ইত্যাদি।
উপসংহার
এটাই! আপনি এখন আপনার রুবি প্রোগ্রাম 🙂
এ এলোমেলো ব্যবহার শুরু করতে প্রস্তুত৷এই পোস্টটি দরকারী খুঁজে পেয়েছেন?
এটি আপনার বন্ধুদের সাথে শেয়ার করুন এবং আমার নিউজলেটারে সদস্যতা নিন৷ তাই আপনি নতুন কিছু মিস করবেন না!