मैं इस समय एक कशेरुक शेडर लिख रहा हूं, और मुझे कुछ यादृच्छिक संख्या की आवश्यकता है। वेरटेक्स शेडर हार्डवेयर में तार्किक/बिट ऑपरेशंस नहीं हैं, इसलिए मैं किसी भी मानक यादृच्छिक संख्या जनरेटर को लागू नहीं कर सकता। क्या केवल मानक अंकगणितीय का उपयोग करके यादृच्छिक संख्या जनरेटर बनाना संभव है? यादृच्छिकता विशेष रूप से अच्छा नहीं होना चाहिए!बिट ऑपरेशंस का उपयोग किए बिना यादृच्छिक संख्या पीढ़ी
उत्तर
आप भद्दा अनियमितता कोई आपत्ति नहीं है, एक क्लासिक विधि
x[n+1] = (x[n] * x[n] + C) mod N
जहां सी और एन स्थिरांक हैं, सी! = 0 -2 और सी! =, और एन प्रमुख है। पोलार्ड Rho फैक्टरिंग के लिए यह एक ठेठ छद्म यादृच्छिक जनरेटर है। सी = 1 और एन = 8051 आज़माएं, वे ठीक काम करते हैं।
वर्टेक्स शेडर्स में कभी-कभी शोर जनरेटर का उपयोग करने के लिए आपके पास उपयोग किया जाता है, जैसे सीजी के noise()
फ़ंक्शन।
एचएलएसएल में शोर फ़ंक्शन होता है जिसका उपयोग मैं कर सकता था: http://msdn.microsoft.com/en-us/library/bb509629(VS.85).aspx हालांकि जब भी मैंने इसे अतीत में उपयोग किया है वास्तव में कभी काम नहीं किया, वास्तव में मुझे विश्वास है कि इसे "अभी तक लागू नहीं किया गया" के रूप में चिह्नित किया गया था! – Martin
उपयोग एक linear congruential generator:
X_(n+1) = (a * X_n + c) mod m
उन है कि मजबूत नहीं हैं, लेकिन कम से कम वे अच्छी तरह से जाना जाता है और लंबी अवधि के हो सकते हैं। विकिपीडिया पृष्ठ भी अच्छा सिफारिशों है:
एक सामान्य LCG की अवधि अधिक से अधिक मीटर है, और एक बहुत कम के कुछ विकल्पों के लिए है कि तुलना में । LCG एक पूर्ण अवधि यदि और केवल यदि होगा:
1. c and m are relatively prime, 2. a - 1 is divisible by all prime factors of m, 3. a - 1 is a multiple of 4 if m is a multiple of 4
मानो या न मानो, मैं इस्तेमाल किया newx = oldx * 5 + 1 (या इसके थोड़ा अंतर) कई वीडियो गेम में। यादृच्छिकता भयानक है - यह एक यादृच्छिक जनरेटर की तुलना में एक scrambled अनुक्रम से अधिक है। लेकिन कभी-कभी आपको बस इतना ही चाहिए। अगर मैं सही ढंग से याद करता हूं, तो यह दोहराने से पहले सभी संख्याओं से गुजरता है।
इसमें कुछ भयानक विशेषताएं हैं। यह आपको लगातार एक ही संख्या में दो बार नहीं देता है। हम में से कुछ ने इसके बदलावों पर परीक्षण का एक गुच्छा किया और हमने अन्य खेलों में कुछ बदलावों का उपयोग किया।
हमने इसका उपयोग तब किया जब हमारे लिए कोई अच्छा मॉड्यूल उपलब्ध नहीं था। यह सिर्फ दो और दो जोड़ों में एक बदलाव है (या 5 और एक जोड़ से गुणा)। मैं इसे आजकल यादृच्छिक संख्याओं के लिए उपयोग नहीं करता - मैंने एक एलसीजी का उपयोग किया - लेकिन शायद यह एक शेडर के लिए ठीक काम करेगा जहां गति महत्वपूर्ण है और आपका निर्देश सेट सीमित हो सकता है।
हे, यह एक दिलचस्प आरएनजी है, जो समझने के लिए सबसे गणितीय रूप से आसान है, मैंने निश्चित रूप से देखा है! मेरे पास इसके साथ एक खेल होगा, क्योंकि आप कहते हैं कि गति महत्वपूर्ण है। – Martin
- 1. समवर्ती यादृच्छिक संख्या पीढ़ी
- 2. 48-बिट बिटवाई ऑपरेशंस?
- 3. एमवीसी अनुप्रयोगों में यादृच्छिक संख्या पीढ़ी
- 4. srand (समय (0)) और यादृच्छिक संख्या पीढ़ी
- 5. यादृच्छिक संख्या पीढ़ी - एक ही नंबर लौटे
- 6. समान रूप से वितरित यादृच्छिक संख्या पीढ़ी
- 7. रुबी में वितरित अनुक्रमिक यादृच्छिक संख्या पीढ़ी 1.9.2
- 8. एक 36 बिट यादृच्छिक संख्या जनरेटर
- 9. सी ++ में ओपन सोर्स यादृच्छिक संख्या पीढ़ी एल्गोरिदम?
- 10. fsharp सूची में यादृच्छिक पीढ़ी
- 11. छद्म यादृच्छिक निर्देशिका पेड़ पीढ़ी?
- 12. यादृच्छिक इलाके की पीढ़ी
- 13. जावास्क्रिप्ट में यादृच्छिक वाक्य पीढ़ी
- 14. यादृच्छिक संख्या
- 15. यादृच्छिक int64 और float64 संख्या
- 16. बिट-ऑपरेशंस का पालन करने के लिए अनुकूलन का मौका?
- 17. यादृच्छिक संख्या विश्लेषण
- 18. यादृच्छिक संख्या इतनी यादृच्छिक नहीं
- 19. छोटे यादृच्छिक दिखने वाली आईडी पीढ़ी
- 20. सी (लिनक्स) में यादृच्छिक संख्या यादृच्छिक संख्या कैसे करें?
- 21. छद्म-यादृच्छिक संख्या जनरेटर
- 22. पुनः उपयोग जलाशय नमूने में यादृच्छिक संख्या
- 23. CUDA यादृच्छिक संख्या
- 24. लूप में यादृच्छिक संख्या
- 25. गैर दोहराव यादृच्छिक संख्या
- 26. एक यादृच्छिक संख्या जनरेटर
- 27. गैर दोहरा यादृच्छिक संख्या
- 28. एक यादृच्छिक संख्या समय की एक यादृच्छिक संख्या लेकिन कभी एक ही यादृच्छिक संख्या का चयन दो बार
- 29. pathForResource? एक्सटेंशन का उपयोग किए बिना (आईफोन)
- 30. कार्यात्मक निर्भरताओं का उपयोग किए बिना -XUndecidableInstances
जो कि यादृच्छिक लगता है, धन्यवाद! – Martin
निश्चित रूप से। ग्राफिक्स के लिए आपको बड़ी सांख्यिकीय गुणवत्ता की आवश्यकता नहीं है। –