2012-09-18 13 views
6

पर्लिन शोर एल्गोरिदम और सिंपलक्स शोर एल्गोरिदम की यादृच्छिकता गुणवत्ता क्या है?पर्लिन/सिंपलक्स शोर एल्गोरिदम की यादृच्छिकता गुणवत्ता क्या है?

दोनों के किस एल्गोरिदम में बेहतर यादृच्छिकता है?

मानक छद्म-यादृच्छिक जेनरेटर की तुलना में, क्या पर्लिन/सिम्प्लेक्स को यादृच्छिक संख्या जेनरेटर के रूप में उपयोग करने का अर्थ है?

अद्यतन: मुझे पता है कि पर्लिन/सिम्प्लेक्स शोर का क्या उपयोग किया जाता है। मैं केवल यादृच्छिकता गुणों के उत्सुक हूँ।

उत्तर

3

जैसा कि "यादृच्छिक संख्याओं के आंकड़े", AI Game Wisdom 2 में बताया गया है, जो पूछता है कि 'बेहतर' यादृच्छिकता किस प्रकार से उपयोग कर रही है, उस पर निर्भर करती है। आम तौर पर, पीआरएनजी की गुणवत्ता परीक्षण बैटरी के माध्यम से तुलना की जाती है। प्रिंट के समय, लेखक इंगित करता है कि सबसे अच्छी तरह से ज्ञात & पीआरएनजी की यादृच्छिकता का परीक्षण करने के लिए सबसे व्यापक रूप से उपयोग की जाने वाली टेस्ट बैटरी ENT & Diehard है। इसके अलावा, how to test random numbers और why statistical randomness tests seem ad-hoc के संबंधित प्रश्न देखें।

ठेठ PRNGs परीक्षण, पर्लिन शोर या सिंप्लेक्स शोर परीक्षण के रूप में PRNGs अधिक जटिल है के मानक के मुद्दों से परे

है क्योंकि:

  1. दोनों आंतरिक रूप से एक PRNG, इस प्रकार उनके उत्पादन की अनियमितता अंतर्निहित PRNG से प्रभावित है की आवश्यकता होती है ।
  2. अधिकांश पीआरएनजी में ट्यून करने योग्य पैरामीटर की कमी है। इसके विपरीत, पर्लिन शोर एक या अधिक सुसंगत-शोर कार्यों (ऑक्टोव्स) का सारांश है जो लगातार बढ़ती आवृत्तियों और कम घटती हुई आयामों के साथ है। चूंकि अंतिम छवि उपयोग की जाने वाली ऑक्टों की संख्या और प्रकृति पर निर्भर करती है, इसलिए यादृच्छिकता की गुणवत्ता तदनुसार भिन्न होगी। libnoise: Modifying the Parameters of the Noise Module
  3. सिंपलक्स शोर में उपयोग किए गए आयामों की संख्या को अलग करने के लिए # 2 के समान एक तर्क है, "4 डी सरल शोर का एक 3 डी अनुभाग 3 डी सरल शोर से अलग है।" स्टीफन गुस्तावसन की Simplex noise demystified
5

पर्लिन शोर और सरल शोर उपयोगी शोर उत्पन्न करने के लिए हैं, पूरी तरह से यादृच्छिक नहीं होने के लिए। इन एल्गोरिदम आमतौर पर प्रक्रियात्मक रूप से जेनरेट किए गए परिदृश्य और इसी तरह के निर्माण के लिए उपयोग किए जाते हैं। उदाहरण के लिए, यह इस तरह इस (here से छवि) के रूप में इलाके उत्पन्न कर सकते हैं:

Heightmap generated by perlin noise

:

Terrain generated from perlin noise

इस छवि में, शोर एक 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 अनुक्रमण का प्रभाव भी है। लेकिन इसके बाद पर्लिन शोर इसके साथ करता है, स्पष्ट यादृच्छिकता में काफी कमी आती है (यह वास्तव में मुझे लगता है कि एक व्यापक क्षेत्र में फैलता है)।

3

मुझे लगता है कि आप उलझन में हैं।

perlin और simplex किसी अन्य स्रोत से यादृच्छिक संख्या लेते हैं और उन्हें कम यादृच्छिक बनाते हैं ताकि वे प्राकृतिक परिदृश्य की तरह दिख सकें (केवल यादृच्छिक संख्या प्राकृतिक परिदृश्य की तरह नहीं दिखती हैं)।

इसलिए वे यादृच्छिक संख्याओं का स्रोत नहीं हैं - वे कहीं और यादृच्छिक संख्या संसाधित करने का एक तरीका हैं।

और यहां तक ​​कि यदि वे एक स्रोत थे, तो वे एक अच्छा स्रोत नहीं होंगे (संख्याएं दृढ़ता से सहसंबंधित हैं)।

संबंधित मुद्दे