তিনটি পূর্ব নির্ধারিত নম্বর থেকে এলোমেলো সংখ্যা বেছে নিয়ে এমন পরিবর্তনীয় কি পাওয়া সম্ভব?
নমুনা:
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]।