में किसी फ़ंक्शन के एकाधिक मूल्यांकन को बल दें I F # में एक यादृच्छिक संख्या "जनरेटर" विकसित करने का प्रयास कर रहा हूं।F #
मैं सफलतापूर्वक निम्नलिखित समारोह बनाया:
let draw() =
let rand = new Random()
rand.Next(0,36)
यह ठीक काम करता है और यह 0 और 36.
हालांकि बीच की एक संख्या उत्पन्न करता है, मैं एक समारोह इस समारोह में कई बार चलाता है कि बनाने के लिए कोशिश कर रहा हूँ ।
मैं निम्नलिखित
let multipleDraws (n:int) =
[for i in 1..n -> draw()]
की कोशिश की लेकिन, मैं केवल एक ही परिणाम मिलता है, के रूप में draw
समझ के लिए केवल एक बार मूल्यांकन किया जाता है।
मैं draw
फ़ंक्शन के एकाधिक निष्पादन को कैसे लागू कर सकता हूं?
ठीक है धन्यवाद, लेकिन मुझे समझ में नहीं आता है, समाधान का उपयोग करके, मुझे अभी भी बीज के साथ एक ही समस्या क्यों नहीं है? – SRKX
रैंडम के निर्माता को कॉल करते समय, आप वर्तमान कंप्यूटर के समय के आधार पर एक बीज उत्पन्न करते हैं। फिर, अगली विधि के लिए प्रत्येक कॉल पिछले बीज * के आधार पर एक नया बीज * उत्पन्न करता है, और उस समय के आधार पर नहीं।चूंकि आप अब समय पर निर्भर नहीं हैं, इससे कोई फ़र्क नहीं पड़ता कि आपकी कॉल उसी मशीन समय पर की जाती है। –
@ एसआरकेके: आप 'printfn "ड्रा को जोड़ना चाहते हैं, जिसे' ड्रॉ 'बॉडी की पहली पंक्ति के रूप में जाना जाता है, यह देखने के लिए कि क्या हो रहा है: आपको केवल एक आउटपुट दिखाई देगा। आपका 'ड्रा' फ़ंक्शन पूर्णांक लौटाता है, जबकि उत्तर में से एक हस्ताक्षर '(इकाई -> int)' के साथ अनाम कार्य देता है जिसे वास्तव में सूची समझ में बुलाया जाता है। यह अज्ञात फ़ंक्शन 'रैंड' मान को बंद करने में कैप्चर करता है, 'रैंड' केवल एक बार बीजित हो जाता है। –