2010-09-30 13 views
9

मुझे श्रेणी -100 में संख्याएं उत्पन्न करना है; +2000] सी ++ में। यदि केवल सकारात्मक संख्याएं उपलब्ध हैं तो मैं इसे रैंड के साथ कैसे कर सकता हूं? क्या कोई तेज तरीका है?यादृच्छिक और नकारात्मक संख्या

उत्तर

35

उत्पन्न 0 और 2100 के बीच एक यादृच्छिक संख्या तो घटाना 100

एक त्वरित गूगल खोज एक decent looking article on using Rand(). कर दिया यह लेख के अंत में एक विशिष्ट श्रेणी के साथ काम करने के लिए कोड उदाहरण भी शामिल है।

4

क्या आप 0-2100 से एक संख्या उत्पन्न कर सकते हैं और 100 घटा सकते हैं?

6

0 और 2100 के बीच एक यादृच्छिक संख्या उत्पन्न करें, और घटाना 100

3

यहाँ कोड है।

#include <cstdlib> 
#include <ctime> 

int main() 
{ 
    srand((unsigned)time(0)); 
    int min = 999, max = -1; 
    for(size_t i = 0; i < 100000; ++i) 
    { 
     int val = (rand()%2101)-100; 
     if(val < min) min = val; 
     if(val > max) max = val; 
    } 

} 
+0

यह एक वितरण भी नहीं देगा! साथ ही, न्यूनतम और अधिकतम 100000 ऐसी संख्याएं ढूंढना प्रश्न के लिए प्रासंगिक नहीं है। – darklon

+0

यदि मौके से 'वैल' हर बार '-100' था, परिणामी' अधिकतम' गलत होगा। न्यूनतम के लिए Ditto। –

+0

@ कॉर्नेलियस, @ बेन: कौन परवाह करता है? यह सिर्फ एक डेमो है। अगर मैंने सिर्फ '(रैंड()% 2101) -100' पोस्ट किया था जो एक संकलित, चलने योग्य नमूना से बेहतर होता? कृप्या। –

1

वर्तमान में मेरी सी ++ वाक्य रचना कुछ पुरानी है, लेकिन आप एक समारोह है कि दो पैरामीटर लेता है लिखना चाहिए: size और offset

तो आप दिए गए size के साथ अधिकतम मूल्य के रूप में संख्याएं उत्पन्न करते हैं और बाद में इसे (ऋणात्मक) ऑफसेट जोड़ते हैं।

समारोह दिखाई देगा:

int GetRandom(int size, int offset = 0); 

और के साथ अपने मामले में कहा जा सकता है:

int myValue = GetRandom(2100, -100); 
5

आप सी ++ TR1 यादृच्छिक कार्यों का उपयोग वांछित वितरण में संख्या उत्पन्न करने के लिए कर सकते हैं।

std::random_device rseed; 
std::mt19937 rng(rseed()); 
std::uniform_int<int> dist(-100,2100); 

std::cout << dist(rng) << '\n'; 
+0

TR1 के बिना उन लोगों के लिए, boost :: यादृच्छिक काफी करीब है। – MSalters

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