তিনটি পূর্ব নির্ধারিত নম্বর থেকে এলোমেলো সংখ্যা বেছে নিয়ে এমন পরিবর্তনীয় কি পাওয়া সম্ভব?
নমুনা:
var= 10 or 100 or 1000
তিনটি পূর্ব নির্ধারিত নম্বর থেকে এলোমেলো সংখ্যা বেছে নিয়ে এমন পরিবর্তনীয় কি পাওয়া সম্ভব?
নমুনা:
var= 10 or 100 or 1000
উত্তর:
মানগুলি ধরে রাখতে এবং বিল্ট-ইন ভেরিয়েবলটি ব্যবহার করে তাদের মধ্যে চয়ন করতে একটি অ্যারের ব্যবহার করুন $RANDOM
। উদাহরণ স্বরূপ,
x[0]=10 # One decade
x[1]=100 # One century
x[2]=1000 # One millennium
for ((i=1; i < 20; ++i)); do echo -n " ${x[$RANDOM%3]}"; done; echo
1000 10 10 10 10 100 10 100 100 10 10 100 100 100 10 1000 1000 1000 10
এলোমেলো মানের গুণ সবচেয়ে ভাল সম্ভব হবে না (এর /dev/urandom
জন্য বাইট পড়ুন ), তবে এটি কোনও স্ক্রিপ্টের জন্য যথেষ্ট ভাল হওয়া উচিত।
উল্লেখ্য 1: মানুষ পরিবর্তে পৃথকভাবে এক করতে পারেন অ্যারের উপাদান আরম্ভের অবশ্যই একটি অ্যারের litteral ব্যবহার মন্তব্যের পরিলক্ষিত হয়েছে হিসাবে,: x=(10 100 1000)
।
দ্রষ্টব্য 2: অ্যারেতে উপাদানগুলির সংখ্যা হার্ড-কোডিংয়ের পরিবর্তে একটি রড উপাদান দ্বারা বের করা যেতে পারে ${x[$RANDOM%${#x[@]}]}
।
x=(10 100 1000)
আক্ষরিক থেকে একটি অ্যারে তৈরি করা হয়েছে, এটি আরও বেশি পঠনযোগ্য এবং আরও মূio় হবে
x[0]=10 # This sets the first value of x to ten. Ten is the number of fingers that humans have (excepting birth defects or mutilation). It is also the sum of 9 and 1, or product of 5 and 2. Ten is not prime. A traditional Christmas gift is ten lords a-leaping.
এরকম কিছু?
আপনি যদি ব্যাশ ব্যবহার করছেন (বা zsh বা ksh93 ) আপনি ঠিক করতে পারেন:
echo "$((10**($RANDOM%3+1)))"
অথবা
var=$((10**($RANDOM%3+1)))
এটি ভারে বরাদ্দ করা
আপনি জিএনইউ কোর্টিল shuf
ইউটিলিটিও ব্যবহার করতে পারেন :
a=$(shuf -n1 -e 10 100 1000)
RANDOM
অন্যান্য উত্তর হিসাবে ব্যবহার যদিও প্রায় অবশ্যই দ্রুত।
এখানে কিছুটা রহস্যজনক উপায়:
printf -v var '1%0*d' $(( RANDOM % 3 + 1 )) 0
এটি $var
প্রয়োজনীয় হিসাবে এলোমেলো মান নির্ধারণ করবে । printf
বিন্যাস স্ট্রিং 1%0Nd
- এই ঘটায় 0
সঙ্গে ছাপা হবে N
নেতৃস্থানীয় শূণ্যসমূহ, যেখানে N
ব্যবধান একটি র্যান্ডম পূর্ণসংখ্যা হতে হবে [1,3]
।