জাভাস্ক্রিপ্ট এর ম্যাথ.র্যান্ডম কতটা এলোমেলো?


116

6 বছরের জন্য আমার ওয়েবসাইটে এলোমেলো নম্বর জেনারেটর পৃষ্ঠা ছিল । দীর্ঘদিন ধরে, এটি "র্যান্ডম সংখ্যার জেনারেটর" এর জন্য গুগলে প্রথম বা দ্বিতীয় ফলাফল এবং কয়েক হাজার প্রতিযোগিতা এবং আলোচনার ফোরাম এবং ব্লগগুলিতে অঙ্কিত না হলে কয়েক ডজন সিদ্ধান্ত নেওয়ার জন্য ব্যবহৃত হয়েছে (আমি জানি কারণ আমি রেফারারে আমার ওয়েব লগ এবং সাধারণত একবার দেখুন)

আজ, কেউ আমাকে ইমেল করেছে আমাকে বলার জন্য এটি এতটা এলোমেলো নাও হতে পারে যা আমি ভেবেছিলাম। তিনি খুব বড় এলোমেলো সংখ্যা তৈরি করার চেষ্টা করেছিলেন (উদাহরণস্বরূপ, 1 এবং 10000000000000000000 এর মধ্যে) এবং তারা দেখতে পেয়েছে যে তারা প্রায় সর্বদা একই সংখ্যায় থাকে। প্রকৃতপক্ষে, আমি একটি লুপটিতে ফাংশনটি গুটিয়ে রেখেছি যাতে আমি হাজার হাজার সংখ্যা উত্পন্ন করতে পারি এবং যথেষ্ট নিশ্চিত হয়েছি, খুব বড় সংখ্যক জন্য, তারতম্যটি মাত্রা 2 মাত্রার মাত্রা ছিল।

কেন?

এখানে লুপিং সংস্করণটি রয়েছে, তাই আপনি এটি নিজের জন্য ব্যবহার করে দেখতে পারেন:

http://andrew.hedges.name/experiments/random/randomness.html

এর মধ্যে মোজিলা বিকাশকারী নেটওয়ার্ক থেকে নেওয়া একটি সরল বাস্তবায়ন এবং ১৯৯ 1997 সালের কিছু কোড রয়েছে যা আমি একটি ওয়েব পৃষ্ঠা সরিয়ে দিয়েছি যা আর বিদ্যমান নেই (পল হোলের "সেন্ট্রাল র্যান্ডোমাইজার ১.৩")। প্রতিটি পদ্ধতি কীভাবে কাজ করে তা দেখতে উত্স দেখুন।

আমি এখানে এবং অন্য কোথাও মার্সেন টুইস্টার সম্পর্কে পড়েছি আমি যে বিষয়ে আগ্রহী তা হ'ল কেন জাভাস্ক্রিপ্টের অন্তর্নির্মিত ম্যাথ.রেন্ডম ফাংশন থেকে ফলাফলের মধ্যে আরও বেশি পার্থক্য থাকবে না । ধন্যবাদ!


"সরনাথ'-এ হিসাবে, ঘুষি মারতে, বা এই ক্ষেত্রে, উত্তর
মেটেল

5
আপনি যদি শিরোনামে প্রশ্নের উত্তরটি সন্ধান করছেন, দেখুন stackoverflow.com/questions/2344312/…
অ্যান্ড্রু বি

উত্তর:


182

1 এবং 100 এর মধ্যে দেওয়া নম্বর।

  • 9 এর 1 ডিজিট (1-9)
  • 90 এর 2 টি সংখ্যা (10-99)
  • 1 এর 3 টি সংখ্যা (100)

1 এবং 1000 এর মধ্যে দেওয়া নম্বর।

  • 9 এর 1 ডিজিট রয়েছে
  • 90 এর 2 টি সংখ্যা রয়েছে
  • 900 এর 3 টি সংখ্যা রয়েছে
  • 1 এর 4 টি সংখ্যা রয়েছে

ইত্যাদি।

সুতরাং আপনি যদি এলোমেলোভাবে কিছু নির্বাচন করেন, তবে নির্বাচিত সংখ্যাগুলির বিশাল সংখ্যাটিতে একই সংখ্যার সংখ্যা থাকবে, কারণ সম্ভাব্য মানগুলির বৃহত সংখ্যাগরিষ্ঠ একই সংখ্যার সংখ্যা রয়েছে।


11
নিখুঁতভাবে এবং সমানভাবে বিতরণ করা আপনার এলোমেলো ধারণা সম্পর্কে ধারণাটি আকর্ষণীয় ...

19
@ আর.পেট - দীর্ঘ পরিমাণে সমানভাবে বিতরণ না করা হলে এলোমেলো সংখ্যা জেনারেশন খুব বেশি ব্যবহার হয় না
অন্নাকাটা

3
আবার পড়তে. @ ডেভিড কেবল সীমাবদ্ধতার মধ্যে কী ধরণের সংখ্যা রয়েছে তা উল্লেখ করছে, এন এলোমেলো সংখ্যা নির্বাচনের ফলাফল নয়। আমি স্বীকার করি শিরোনামটি বিভ্রান্তিকর।
nikc.org

3
রেকর্ডের জন্য, আমি এই এবং @ jwoolard এর উত্তর দুটিতেই ভোট দিয়েছি। আমি এটিকে গ্রহণযোগ্য উত্তর হিসাবে বেছে নিয়েছি কারণ উদাহরণগুলি এটি স্ফটিক হিসাবে স্পষ্ট করে দেয় যে সংখ্যার বন্টন আরও সংখ্যার সাথে সংখ্যায় কেন পড়ে।
অ্যান্ড্রু হেজেস

1
@ অ্যান্ড্রু-হেজেস বেশ সঠিক - এটি পরিষ্কার উত্তর, তবে ধন্যবাদ :)
jwoolard

56

আপনার ফলাফল আসলে প্রত্যাশিত। যদি এলোমেলো সংখ্যাগুলি 1 থেকে 10 range n এর পরিসরে একত্রে বিতরণ করা হয় তবে আপনি সংখ্যাটির প্রায় 9/10 টিতে এন সংখ্যা এবং আরও 9/100 এর এন -1 সংখ্যার প্রত্যাশা করবেন।


8
যথাযথভাবে। অঙ্কের সংখ্যার বিতরণটি সম্ভবত স্কিউ হয়ে যাবে। অঙ্কের সংখ্যার লগের বিতরণ শৌডল যদিও অভিন্ন হবে।
নলডোরিন

45

এলোমেলো বিভিন্ন ধরণের। ম্যাথ.র্যান্ডম আপনাকে সংখ্যার অভিন্ন বিতরণ দেয়।

আপনি যদি আকারের বিভিন্ন অর্ডার চান তবে আমি একটি পাওয়ার আইন বিতরণ বলে যা তৈরি করতে একটি ঘনিষ্ঠ ফাংশন ব্যবহার করার পরামর্শ দেব :

function random_powerlaw(mini, maxi) {
    return Math.ceil(Math.exp(Math.random()*(Math.log(maxi)-Math.log(mini)))*mini)
}

এই ফাংশনটি আপনাকে প্রায় 2-অঙ্কের সংখ্যা এবং 3-সংখ্যার সংখ্যা হিসাবে 1-অঙ্কের সংখ্যার সমান সংখ্যক দেয়।

সাধারণ বিতরণের মতো এলোমেলো সংখ্যার জন্য অন্যান্য বিতরণও রয়েছে (এটি গাউসীয় বিতরণও বলা হয়)।


এই অ্যালগরিদম, আমি করা minimum = 1এবং maximum = 10এবং কখনও কখনও ফলে 11 পেতে হবে। আপনি সম্ভবত এর Math.floorপরিবর্তে ব্যবহার করতে চেয়েছিলেনMath.round
স্যাম ইটন

1
কেন এটি কাজ করে? এটি ইউনিফর্ম বিতরণকে তাত্পর্যপূর্ণ বিতরণে রূপান্তর করে?
shinzou

@ শিনজৌ আমি গণিত.স্ট্যাকেক্সেঞ্জেনে জিজ্ঞাসা করেছি এবং উত্তর হিসাবে কিছুটা আলাদা সূত্র পেয়েছি। গণিত থেকে প্রাপ্ত সূত্রটি গণিত.স্ট্যাকেক্সচেঞ্জ থেকে প্রতিবিম্বিত করতে আমি কোডটি পরিবর্তন করেছি।
খ্রিস্টান

20

আমার কাছে একেবারে এলোমেলো মনে হচ্ছে! (ইঙ্গিত: এটি ব্রাউজার নির্ভর।

ব্যক্তিগতভাবে, আমি মনে করি আমার বাস্তবায়ন আরও ভাল হবে, যদিও আমি এটি এক্সকেসিডি থেকে চুরি করেছি , যার সর্বদা স্বীকৃতি দেওয়া উচিত:

function random() {
  return 4; // Chosen by a fair dice throw. Guaranteed to be random.
}

19
এটি ব্রাউজার নির্ভর নির্ভর করার জন্য +1, লিঙ্ক ছাড়াই এক্সকেসিডি ধার করার জন্য -1।

প্রয়োজনীয় বা না, এটি যেহেতু এটি এক্সকিসিডি, তাই এটি বিশিষ্ট হচ্ছে। :)
আরাফাঙ্গিয়ন

2
ওটি: আমি অবাক এবং খুশি যে এই সপ্তাহে "এক্সকেসিডি" একটি বিশ্ববিদ্যালয় চ্যালেঞ্জ প্রশ্নের উত্তর ছিল: ডি
ম্যাট শ্যাচ

2
বার্গি: একটি সরাসরি লিঙ্ক যথেষ্ট না?
আরাফাঙ্গিয়ন

আমি মনে করি তারা বোঝায় যে কৌতুকটি সঠিকভাবে উদ্ধৃত হয়নি ("এলোমেলো = 4;" "রিটার্ন 4;" এর পরিবর্তে)
এরেন টানটেকিন

18

নীচের কাগজটিতে কীভাবে বড় ওয়েব ব্রাউজারগুলিতে গণিত.আরন্ডম () নিরাপদ (আন) নিরাপদ রয়েছে: অ্যামিড ক্লাইন (২০০৮) দ্বারা "প্রধান ব্রাউজারগুলিতে অস্থায়ী ব্যবহারকারী ট্র্যাকিং এবং ক্রস-ডোমেন তথ্য ফাঁস এবং আক্রমণগুলি" । এটি সাধারণত জাভা বা উইন্ডোজ অন্তর্নির্মিত পিআরএনজি ফাংশনগুলির চেয়ে শক্তিশালী নয়।

অন্যদিকে, 2 ^ 19937-1 সময়কালের এসএফএমটি বাস্তবায়নের জন্য প্রতিটি পিআরএনজি অনুক্রমের জন্য রক্ষণাবেক্ষণ করা অভ্যন্তরীণ রাজ্যের 2496 বাইট প্রয়োজন। কিছু লোক এটিকে অমার্জনীয় ব্যয় হিসাবে বিবেচনা করতে পারে।


1
+1: উল্লিখিত কাগজটি মূল প্রশ্নটি থেকে অনেক দূরে।
রোল্যান্ড ইলিগ

6

আপনি যদি 1000000000000000000000 এর মতো একটি নম্বর ব্যবহার করেন আপনি জাভাস্ক্রিপ্ট যে ডেটাটাইপটি ব্যবহার করছেন তার যথার্থতার বাইরে চলে যাচ্ছেন। মনে রাখবেন যে সমস্ত সংখ্যা "00" এ শেষ হয়।


1
যদিও এই ক্ষেত্রে তার সমস্যা নয়।
জোয়

3
@ জোহানেস - এটি তার অন্যতম সমস্যা :)
অনাকাটা

আইইই 75৫৪ এর বিতরণ এমনকি নয়। হতে পারে আপনি দুটি থেকে ইনক্রিমেন্টে 0 থেকে 999 টি উপস্থাপন করতে পারেন এবং এর জন্য পর্যাপ্ত নির্ভুলতা থাকতে পারে যাতে আপনি বহুবার সংখ্যা বাছাই করে সেই পরিসীমা জুড়ে একটি এমনকি বিতরণ লক্ষ্য করেন notice 10% দুই অঙ্ক এবং 90% তিন অঙ্কের হবে। আপনি যদি সত্যিই উচ্চ সংখ্যায় আঘাত করতে শুরু করেন, তখন বৃদ্ধিটি 1 ছাড়িয়ে যাবে You আপনি কেবলমাত্র একটি ট্রিলিয়ন বিলিয়ন থেকে ট্রিলিয়ন বিলিয়ন এক হাজারে পদক্ষেপ নিতে সক্ষম হবেন এবং একটি ট্রিলিয়ন বিলিয়ন ও এক নয়। যদিও অল্প সংখ্যক / দাঁড়িপাল্লার জন্য, এই প্রভাবটি অ-অস্তিত্বের জন্য তুচ্ছ হবে। স্কেল প্রভাব যদিও আরও বেশি প্রভাব ফেলবে।
jgmjgm

5

কেওস গেমটিতে আমি জেএস সিউডোরান্ডম নম্বর জেনারেটরটি চেষ্টা করেছি ।

আমার সিয়ের্পিস্কি ত্রিভুজটি এর সুন্দর এলোমেলো বলেছেন: ফ্র্যাক্টাল


2
আপনি কি এখানে ত্রিভুজ কোডটি ভাগ করে নিতে এবং jsfiddle / jsbin মনে করতে পারেন যাতে আমরা সহজেই এটি বিভিন্ন ব্রাউজারগুলির অনুশীলনে পরীক্ষা করে দেখতে পারি?
ফ্যাব্রিসিও ম্যাট

1
ঠিক আছে, তবে আমাকে কয়েক দিন দিন, কারণ আমার কোডটি ইংরেজিতে অনুবাদ করতে হবে। এখন এটি পোলিশ-ইংরেজি এবং আমার অনেক কাজ আছে have
zie1ony

1
@ জিআনি 1 কয়েক দিন শেষ।
trusktr

1
usp :( work, work, work লিংক: kubaplas.vot.pl/green/fractal প্রথম প্যারামিটারটি ভার্টেক্সের NR second দ্বিতীয়টি লাইন বিভাগের ছেদ বিন্দু (0 থেকে 1 পর্যন্ত) মাত্র পরীক্ষা-নিরীক্ষা।
zie1ny

4
লিঙ্কটি মৃত - এর পরিবর্তে কোনও গিথুব রেপো?
কে কে কোয়ান

3

ঠিক আছে, আপনি যদি 1e6 পর্যন্ত সংখ্যা তৈরি করে থাকেন তবে আশা করি আপনি প্রায় সমান সম্ভাবনা সহ সমস্ত নম্বর পাবেন। এর অর্থ এটিও হ'ল যে আপনার কাছে দশটির মধ্যে একটিতে এক সংখ্যা কম হওয়ার সাথে একটি সংখ্যা পাওয়ার সম্ভাবনা রয়েছে। দুই অঙ্ক কম পাওয়ার এক শত সুযোগের মধ্যে একটি, ইত্যাদি আমি সন্দেহ করি যে অন্য আরএনজি ব্যবহার করার সময় আপনি অনেক পার্থক্য দেখতে পাবেন, কারণ আপনার সংখ্যা অনুসারে আপনার অভিন্ন বন্টন রয়েছে, না তাদের লগারিদম।


0

1 থেকে N এ অভিন্নভাবে বিতরণ করা নন-এলোমেলো সংখ্যার একই সম্পত্তি রয়েছে। মনে রাখবেন যে (কিছুটা অর্থে) এটি নির্ভুলতার বিষয়। ০-৯৯৯ তে (সমান হিসাবে) একটি অভিন্ন বিতরণে এর 90% সংখ্যার দুটি সংখ্যা থাকে। 0-999999 এ অভিন্ন বিতরণে এর পাঁচটি সংখ্যা রয়েছে এর 905 সংখ্যা রয়েছে।

সংখ্যার যে কোনও সেট (কিছু না খুব বাধাজনক অবস্থার অধীনে) এর ঘনত্ব থাকে। যখন কেউ "এলোমেলো" সংখ্যাগুলি নিয়ে আলোচনা করতে চান, এই সংখ্যার ঘনত্ব নির্দিষ্ট করা উচিত (উপরে উল্লিখিত হিসাবে।) একটি সাধারণ ঘনত্ব হ'ল অভিন্ন ঘনত্ব। অন্যগুলি রয়েছে: সূচকীয় ঘনত্ব, সাধারণ ঘনত্ব ইত্যাদি One এলোমেলো সংখ্যা জেনারেটরের প্রস্তাব দেওয়ার আগে কোনটি ঘনত্ব প্রাসঙ্গিক তা অবশ্যই বেছে নিতে হবে। এছাড়াও, এক ঘনত্ব থেকে আগত সংখ্যাগুলি সহজেই বাহ্যিক উপায়ে সহজেই অন্য ঘনত্বে রূপান্তরিত হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.