यह जनरेटर क्या करता है
यह टूल ऐसे स्यूडो-रैंडम नंबरों की एक सूची तैयार करता है जो लॉग-नॉर्मल वितरण (log-normal distribution) का पालन करते हैं। कोई यादृच्छिक चर X तब लॉग-नॉर्मल कहलाता है जब उसका प्राकृतिक लघुगणक, यानी \(\ln(X)\), नॉर्मल वितरण में आता है। जनरेटर पहले प्रसिद्ध Box-Muller ट्रांसफ़ॉर्म से मानक-नॉर्मल मान बनाता है, उन्हें लक्षित नॉर्मल \(N(\mu, \sigma^2)\) तक स्केल करता है, और फिर उनका exponential (घातांक) लेकर हमेशा धनात्मक लॉग-नॉर्मल मान प्राप्त करता है।
ज़रूरी बात: mu और sigma का असली मतलब
पैरामीटर \(\mu\) और \(\sigma\) उस अंतर्निहित नॉर्मल वितरण को बताते हैं जिसमें \(\ln(X)\) आता है — ये स्वयं X के माध्य और मानक विचलन नहीं हैं। X का वास्तविक माध्य \(\exp(\mu + \sigma^2/2)\) होता है, मध्यिका \(\exp(\mu)\) होती है, और प्रसरण \((\exp(\sigma^2) - 1)\cdot\exp(2\mu + \sigma^2)\) होता है। ये संदर्भ मान आपके सैंपल के साथ दिखाए जाते हैं ताकि आप आउटपुट की जाँच-परख कर सकें।
$$\begin{aligned} \text{Mean} &= \exp\!\left(\mu + \tfrac{1}{2}\sigma^{2}\right) \\ \text{Median} &= \exp\!\left(\mu\right) \\ \text{Var} &= \left(e^{\sigma^{2}} - 1\right) e^{\,2\mu + \sigma^{2}} \end{aligned}$$इसे कैसे इस्तेमाल करें
\(\mu\) (कोई भी वास्तविक संख्या), \(\sigma\) (शून्य या धनात्मक), और आप कितने नंबर चाहते हैं (1 से 1000 तक) दर्ज करें। तय करें कि कितने सार्थक अंक (significant digits) दिखाने हैं। हर बार चलाने पर नए यूनिफ़ॉर्म रैंडम नंबर निकाले जाते हैं, इसलिए मान हर बार बदलते हैं। चूँकि Box-Muller विधि हर यूनिफ़ॉर्म जोड़ी से दो नॉर्मल मान देती है, अगर आप विषम (odd) संख्या माँगते हैं तो एक अतिरिक्त मान को बस छोड़ दिया जाता है।
सूत्र की व्याख्या
(0,1] में यूनिफ़ॉर्म मान U1, U2 के लिए: \(Z = \sqrt{-2\ln U_1}\,\cos(2\pi U_2)\) से \(Z \sim N(0,1)\) मिलता है। फिर \(Y = \mu + \sigma\, Z\), जो \(N(\mu, \sigma^2)\) होता है, और \(X = \exp(Y)\) लॉग-नॉर्मल होता है। \(\ln(0)\) से बचने के लिए हम U1 को एक बहुत छोटे epsilon पर रोक देते हैं।
$$\begin{gathered} X = \exp\!\left(\mu + \sigma\, Z\right) \\[1.5em] \text{where}\quad \left\{ \begin{aligned} Z &= \sqrt{-2\ln U_1}\,\cos(2\pi U_2) \\ U_1, U_2 &\sim \text{Uniform}(0,1) \end{aligned} \right. \end{gathered}$$
हल किया गया उदाहरण
\(\mu = 1\), \(\sigma = 2\) के साथ, मान लें \(U_1 = 0.5\), \(U_2 = 0.25\)। तब \(R = \sqrt{-2\ln 0.5} = 1.17741\)। \(Z_1 = R\cdot\cos(\pi/2) = 0\) और \(Z_2 = R\cdot\sin(\pi/2) = 1.17741\)। इसलिए \(X_1 = \exp(1) = 2.71828\) और \(X_2 = \exp(1 + 2\cdot 1.17741) = \exp(3.35482) \approx 28.64\)। सैद्धांतिक माध्य \(\exp(3) = 20.0855\) और मध्यिका \(\exp(1) = 2.71828\) इन मानों के अनुरूप हैं।
अक्सर पूछे जाने वाले सवाल
हर बार चलाने पर मेरे मान अलग क्यों आते हैं? यह Math.random() का इस्तेमाल करने वाला एक यादृच्छिक (stochastic) जनरेटर है; बिना किसी निश्चित seed के हर बार परिणाम अलग होते हैं।
अगर sigma = 0 हो तो? तब वितरण अपभ्रष्ट (degenerate) हो जाता है और हर मान \(\exp(\mu)\) के बराबर होता है।
क्या कोई मान ऋणात्मक हो सकता है? नहीं — लॉग-नॉर्मल का परिसर \((0, \infty)\) है, इसलिए सभी आउटपुट हमेशा धनात्मक होते हैं।