पर्लिन शोर और सरल शोर उपयोगी शोर उत्पन्न करने के लिए हैं, पूरी तरह से यादृच्छिक नहीं होने के लिए। इन एल्गोरिदम आमतौर पर प्रक्रियात्मक रूप से जेनरेट किए गए परिदृश्य और इसी तरह के निर्माण के लिए उपयोग किए जाते हैं। उदाहरण के लिए, यह इस तरह इस (here से छवि) के रूप में इलाके उत्पन्न कर सकते हैं:
:
इस छवि में, शोर एक 2D heightmap इस जैसे (here से छवि) उत्पन्न करता है
प्रत्येक पिक्सेल का रंग ऊंचाई का प्रतिनिधित्व करता है। ऊंचाईमैप बनाने के बाद, छवि के "ऊंचाइयों" (रंगों) से मेल खाने वाले इलाके को बनाने के लिए एक रेंडरर का उपयोग किया जाता है।
इसलिए, एल्गोरिदम के परिणाम वास्तव में "यादृच्छिक" नहीं हैं; जैसा कि आप देख सकते हैं, वहां बहुत आसानी से समझने योग्य पैटर्न हैं।
सिंपलक्स थोड़ा सा "निसर" दिखता है, जो कम यादृच्छिकता दर्शाता है, लेकिन इसका मुख्य उद्देश्य यह है कि यह समान शोर पैदा करता है लेकिन उच्च आयामों के लिए बेहतर होता है। यही है, अगर कोई 3 डी, 4 डी, 5 डी शोर का उत्पादन करेगा, तो सरल शोर पर्लिन शोर को बेहतर प्रदर्शन करेगा, और इसी तरह के परिणाम देगा।
यदि आप एक सामान्य psuedo-random संख्या जनरेटर चाहते हैं, तो Mersenne twister या other prngs देखें। चेतावनी दी, क्रिप्टोग्राफी के लिए wrt, prngs चेतावनी से भरा हो सकता है।
अद्यतन:
(ऑप्स के जवाब अद्यतन प्रश्न)
इन शोर कार्यों के यादृच्छिक गुण का सवाल है, मैं पर्लिन शोर एक (बहुत) गरीब आदमी का इनपुट के रूप में PRNG उपयोग करता है, और करता है पता पड़ोसी "यादृच्छिक" पिक्सल के बीच कुछ चिकनाई/इंटरपोलेशन। इनपुट यादृच्छिकता वास्तव में एक precomputed यादृच्छिक वेक्टर में सिर्फ छद्म यादृच्छिक अनुक्रमण है।
सूचकांक कुछ सरल पूर्णांक संचालन का उपयोग करके गणना की जाती है, कुछ भी फैंसी नहीं। उदाहरण के लिए, शोर ++ प्रोजेक्ट अपने स्रोत शोर को प्राप्त करने के लिए प्रीकंप्यूटेड "यादृच्छिक वेक्टर" (here देखें) का उपयोग करता है, और इस वेक्टर से अलग-अलग मानों के बीच इंटरपोलेट करता है। यह कुछ सरल पूर्णांक संचालन के साथ इस वेक्टर में "यादृच्छिक" इंडेक्स उत्पन्न करता है, जिसमें छद्म यादृच्छिकता की एक छोटी राशि शामिल होती है। यहाँ एक टुकड़ा है:
int vIndex = (NOISE_X_FACTOR * ix + NOISE_Y_FACTOR * iy + NOISE_Z_FACTOR * iz + NOISE_SEED_FACTOR * seed) & 0xffffffff;
vIndex ^= (vIndex >> NOISE_SHIFT);
vIndex &= 0xff;
const Real xGradient = randomVectors3D[(vIndex<<2)];
...
कुछ हद तक यादृच्छिक शोर तो अधिक सरल है और प्रभाव में पड़ोसी पिक्सल के साथ मिश्रित, पैटर्न का निर्माण किया।
प्रारंभिक शोर के उत्पादन के बाद, पेरिन/सरल शोर में शोर के ऑक्टों की अवधारणा है; वह है, अलग-अलग पैमाने पर शोर को अपने आप में घुमा रहा है।यह अभी तक और अधिक पैटर पैदा करता है। तो शोर की प्रारंभिक गुणवत्ता संभवतः प्रीकंप्यूटेड यादृच्छिक सरणी के रूप में अच्छी है, साथ ही psuedorandom अनुक्रमण का प्रभाव भी है। लेकिन इसके बाद पर्लिन शोर इसके साथ करता है, स्पष्ट यादृच्छिकता में काफी कमी आती है (यह वास्तव में मुझे लगता है कि एक व्यापक क्षेत्र में फैलता है)।