আমার একটি ফাংশন প্রয়োজন যা প্রদত্ত পরিসরে (সীমান্তের মান সহ) এলোমেলো পূর্ণসংখ্যার উত্পন্ন করবে। আমি অযৌক্তিক মানের / এলোমেলোতা প্রয়োজনীয়তা নেই, আমার চারটি প্রয়োজনীয়তা রয়েছে:
- আমার তা দ্রুত হওয়া দরকার আমার প্রকল্পে লক্ষ লক্ষ (বা কখনও কখনও কয়েক মিলিয়ন) এলোমেলো সংখ্যাও তৈরি করা দরকার এবং আমার বর্তমান জেনারেটরের কাজটি একটি বাধা হিসাবে প্রমাণিত হয়েছে।
- আমার এটি যুক্তিসঙ্গতভাবে অভিন্ন হতে হবে (র্যান্ডের ব্যবহার () পুরোপুরি ভাল)।
- সর্বনিম্ন সর্বাধিক ব্যাপ্তি <0, 1> থেকে <-32727, 32727> এ যে কোনও হতে পারে।
- এটি বীজযোগ্য হতে হবে।
আমার কাছে বর্তমানে সি ++ কোড রয়েছে:
output = min + (rand() * (int)(max - min) / RAND_MAX)
সমস্যাটি হ'ল এটি সত্যই অভিন্ন নয় - সর্বোচ্চ তখনই ফিরে আসে যখন র্যান্ড () = RAND_MAX (ভিজ্যুয়াল সি ++ এর জন্য এটি 1/32727)। এটি <-1, 1> এর মতো ছোট রেঞ্জের জন্য প্রধান সমস্যা, যেখানে শেষ মানটি কখনই ফিরে আসে না।
সুতরাং আমি কলম এবং কাগজ ধরলাম এবং নীচের সূত্রটি নিয়ে এসেছি (যা অন্তর্নিহিত (এন + 0.5) পূর্ণসংখ্যার বৃত্তাকার কৌশল):
তবে এটি এখনও আমাকে অভিন্ন বিতরণ দেয় না। 10000 নমুনা দিয়ে পুনরাবৃত্তি আমাকে মান মান -1, 0. 1 এর জন্য 37:50:13 অনুপাত দেয়।
আপনি কি আরও ভাল সূত্র প্রস্তাব করতে পারেন? (বা এমনকি পুরো ছদ্ম-এলোমেলো সংখ্যা জেনারেটর ফাংশন)