ন্যূনতম এবং সর্বাধিকের উপর নির্ভর করে এলোমেলো সংখ্যা তৈরি করার কোনও উপায় আছে কি?
উদাহরণস্বরূপ, যদি নূন্যতম 1 এবং সর্বোচ্চ 20 হয় তবে 1 এবং 20 সহ 1 এবং 20 এর মধ্যে কোনও সংখ্যা উত্পন্ন করা উচিত?
ন্যূনতম এবং সর্বাধিকের উপর নির্ভর করে এলোমেলো সংখ্যা তৈরি করার কোনও উপায় আছে কি?
উদাহরণস্বরূপ, যদি নূন্যতম 1 এবং সর্বোচ্চ 20 হয় তবে 1 এবং 20 সহ 1 এবং 20 এর মধ্যে কোনও সংখ্যা উত্পন্ন করা উচিত?
random_int()
, random_bytes()
বা openssl_random_pseudo_bytes()
। যেমনটি সালভাদোর ডালি বলেছেন rand()
যে ক্রিপ্টোগ্রাফিকভাবে নিরাপদ ফলাফল উত্পন্ন করবেন না। ডকুমেন্টেশন দেখুন php.net/manual/en/function.rand.php
উত্তর:
<?php
$min=1;
$max=20;
echo rand($min,$max);
?>
একটি নতুন পিএইচপি 7 এ শেষ পর্যন্ত একটি ক্রিপ্টোগ্রাফিক সুরক্ষিত সিউডো-র্যান্ডম পূর্ণসংখ্যার জন্য সমর্থন রয়েছে ।
int random_int ( int $min , int $max )
random_int - ক্রিপ্টোগ্রাফিকভাবে নিরাপদ সিউডো-র্যান্ডম পূর্ণসংখ্যার উত্পন্ন করে
যা মূলত পূর্ববর্তী উত্তরগুলি অচল করে দেয়।
random_int
এবং random_bytes
- ফাংশন github.com/paragonie/random_compat ।
random_int
? যদি এটি "আরও ভাল" এলোমেলো নম্বর দেয়, তবে কেন এটি অ-ক্রাইপ্টো কারণে ব্যবহার করবেন না?
random_int
এসকে এস তে পরিবর্তন করার পক্ষে যথেষ্ট নগণ্য rand
। এছাড়াও, আমার ব্যবহারের কেসটি আবার চেষ্টা করে দেখুন অ্যালগরিদম, এবং আমি অবশ্যই প্রত্যাশাযোগ্য এলোমেলো ইনটসের কারণে ঘুমানোর পরে একাধিক ব্যর্থ ফাংশনগুলি ক্লাম্পিং করতে চাই না
একটি দ্রুততর দ্রুত সংস্করণ ব্যবহার করেন mt_rand:
$min=1;
$max=20;
echo mt_rand($min,$max);
সূত্র: http://www.php.net/manual/en/function.mt-rand.php ।
দ্রষ্টব্য: এটির জন্য আপনার সার্ভারের ম্যাথ পিএইচপি মডিউল সক্ষম হওয়া দরকার। যদি এটি না হয় তবে এটি সক্ষম করতে আপনার হোস্টটিকে বাগ করুন, বা আপনাকে স্বাভাবিক (এবং ধীর) র্যান্ড () ব্যবহার করতে হবে।
আমি এখানে উত্তরগুলি বান্ডিল করেছি এবং এটির সংস্করণ স্বাধীন করেছি;
function generateRandom($min = 1, $max = 20) {
if (function_exists('random_int')):
return random_int($min, $max); // more secure
elseif (function_exists('mt_rand')):
return mt_rand($min, $max); // faster
endif;
return rand($min, $max); // old
}
rand(1,20)
পিএইচপি-র র্যান্ড ফাংশনের জন্য ডক্স এখানে রয়েছে:
http://php.net/manual/en/function.rand.php
srand()
এলোমেলো নম্বর জেনারেটরের বীজ মান সেট করতে ফাংশনটি ব্যবহার করুন।
আর একবার চেষ্টা কর. এটি আপনার ইচ্ছানুযায়ী আইডি উত্পন্ন করবে।
function id()
{
// add limit
$id_length = 20;
// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {
// generate randomly within given character/digits
@$token .= $alfa[rand(1, strlen($alfa))];
}
return $token;
}