जवाबों:
Random
वर्ग यादृच्छिक संख्या बनाने के लिए प्रयोग किया जाता है। (छद्म यादृच्छिक जो निश्चित रूप से है।)
उदाहरण:
Random rnd = new Random();
int month = rnd.Next(1, 13); // creates a number between 1 and 12
int dice = rnd.Next(1, 7); // creates a number between 1 and 6
int card = rnd.Next(52); // creates a number between 0 and 51
यदि आप एक से अधिक यादृच्छिक संख्या बनाने जा रहे हैं, तो आपको Random
उदाहरण रखना चाहिए और उसका पुन: उपयोग करना चाहिए । यदि आप समय में बहुत करीब नए उदाहरण बनाते हैं, तो वे यादृच्छिक संख्याओं की एक ही श्रृंखला का उत्पादन करेंगे, क्योंकि यादृच्छिक जनरेटर सिस्टम घड़ी से बीजित होता है।
rnd
रूप में घोषित कर सकते हैं static
और / या इसे सेट कर सकते हैं ।
Random
...
Random
आपके रैंडम-नेस को और अधिक मजबूत बनाने के लिए कुछ अच्छे "एन्हांसमेंट्स" हैं : ericlippert.com/2019/02/04/fixing-random-part-2 और codeblog.jonskeet.uk/2009/11/04/reveriving -गतिहीनता ।
प्रश्न बहुत सरल लगता है लेकिन उत्तर थोड़ा जटिल है। यदि आप देखते हैं कि लगभग सभी ने रैंडम क्लास का उपयोग करने का सुझाव दिया है और कुछ ने आरएनजी क्रिप्टो क्लास का उपयोग करने का सुझाव दिया है। लेकिन फिर कब क्या चुनना है।
उसके लिए हमें पहले RANDOMNESS और उसके पीछे के दर्शन को समझना होगा।
मैं आपको इस वीडियो को देखने के लिए प्रोत्साहित करूंगा जो C # https://www.youtube.com/watch?v=tCYxc-2-3fY का उपयोग करके RANDOMNESS के दर्शन में गहराई तक जाता है
पहली बात हमें RANDOMNESS के दर्शन को समझने दें। जब हम किसी व्यक्ति को RED, GREEN और YELLOW के बीच चयन करने के लिए कहते हैं तो आंतरिक रूप से क्या होता है। क्या व्यक्ति लाल या पीला या हरा रंग का चयन करता है?
कुछ प्रारंभिक विचार व्यक्तियों के दिमाग में चले जाते हैं जो उनकी पसंद को तय करते हैं, यह पसंदीदा रंग, भाग्यशाली रंग और इतने पर हो सकता है। दूसरे शब्दों में कुछ शुरुआती ट्रिगर जिसे हम रैंडम में SEED.This कहते हैं, शुरुआती बिंदु है, वह ट्रिगर जो उसे रैंडम मूल्य का चयन करने के लिए उकसाता है।
अब अगर किसी SEED का अनुमान लगाना आसान है, तो उन प्रकार के यादृच्छिक संख्याओं को PSEUDO कहा जाता है और जब एक बीज का अनुमान लगाना मुश्किल होता है तो उन यादृच्छिक संख्याओं को SECURED यादृच्छिक संख्या कहा जाता है ।
उदाहरण के लिए एक व्यक्ति चुनता है मौसम और ध्वनि संयोजन के आधार पर रंग है तो प्रारंभिक बीज का अनुमान लगाना मुश्किल होगा।
अब मुझे एक महत्वपूर्ण वक्तव्य देना है: -
"" रैंडम "वर्ग केवल PSEUDO यादृच्छिक संख्या उत्पन्न करता है और SECURE यादृच्छिक संख्या उत्पन्न करने के लिए हमें" RNGCryptoServiceProvider "वर्ग का उपयोग करने की आवश्यकता होती है।
रैंडम क्लास आपके सीपीयू घड़ी से बीज मान लेता है जो बहुत अधिक अनुमानित है। तो दूसरे शब्दों में, C # का RANDOM वर्ग छद्म यादृच्छिक संख्या उत्पन्न करता है, नीचे उसी के लिए कोड है।
** नोट: ** .NET Core 2.0.0+
पैरामीटर रहित कंस्ट्रक्टर पर एक अलग बीज का उपयोग करता है: सीपीयू घड़ी के बजाय इसका उपयोग करता है Guid.NewGuid().GetHashCode()
।
var random = new Random();
int randomnumber = random.Next()
जबकि RNGCryptoServiceProvider
वर्ग बीज उत्पन्न करने के लिए ओएस एन्ट्रापी का उपयोग करता है। ओएस एन्ट्रॉपी एक यादृच्छिक मूल्य है जो ध्वनि, माउस क्लिक और कीबोर्ड टाइमिंग, थर्मल टेम्प आदि का उपयोग करके उत्पन्न होता है। नीचे समान के लिए कोड जाता है।
using (RNGCryptoServiceProvider rg = new RNGCryptoServiceProvider())
{
byte[] rno = new byte[5];
rg.GetBytes(rno);
int randomvalue = BitConverter.ToInt32(rno, 0);
}
ओएस एन्ट्रापी को समझने के लिए 14:30 https://www.youtube.com/watch?v=tCYxc-2-3fY से इस वीडियो को देखें जहां ओएस एन्ट्रॉपी का तर्क समझाया गया है। इसलिए सरल शब्दों में कहें तो RNG Crypto SECURE रैंडम नंबर जेनरेट करता है।
RandomNumberGenerator.Create()
, RNGCryptoServiceProvider
क्योंकि इसके निर्माता को कॉल करने के बजाय इसका उपयोग करने की सिफारिश की गई है।
हर बार जब आप नया रैंडम करते हैं () तो इसे इनिशियलाइज़ किया जाता है। इसका मतलब है कि एक तंग लूप में आपको कई बार समान मूल्य मिलता है। आपको एक ही रैंडम इंस्टेंस रखना चाहिए और उसी इंस्टेंस पर नेक्स्ट का इस्तेमाल करते रहना चाहिए।
//Function to get random number
private static readonly Random getrandom = new Random();
public static int GetRandomNumber(int min, int max)
{
lock(getrandom) // synchronize
{
return getrandom.Next(min, max);
}
}
Random
वस्तु को स्टोर करने की कोशिश की । दोनों ही मामलों में मुझे एक ही यादृच्छिक संख्या मिली। पंकज के दृष्टिकोण के साथ ऐसा नहीं हुआ। शायद यह यादृच्छिक है , लेकिन मुझे अब इस पर संदेह है। मैं अलग-अलग थ्रेड्स से एक ही सेकंड में यादृच्छिक संख्या के लिए क्वेरी कर रहा हूं।
खबरदार कि new Random()
वर्तमान टाइमस्टैम्प पर वरीयता प्राप्त है।
यदि आप केवल एक संख्या उत्पन्न करना चाहते हैं, जिसका आप उपयोग कर सकते हैं:
new Random().Next( int.MinValue, int.MaxValue )
अधिक जानकारी के लिए, रैंडम वर्ग को देखें, हालांकि कृपया ध्यान दें:
हालाँकि, क्योंकि घड़ी में परिमित रिज़ॉल्यूशन होता है, जो पैरामीटर रहित निर्माता का उपयोग करके अलग-अलग रैंडम ऑब्जेक्ट्स को लगातार उत्तराधिकार में बनाता है, रैंडम नंबर जेनरेटर बनाता है जो रैंडम नंबरों के समान क्रम का उत्पादन करता है।
इसलिए यादृच्छिक संख्या की एक श्रृंखला उत्पन्न करने के लिए इस कोड का उपयोग न करें।
new Random()
लूप में उपयोग नहीं करना एक महत्वपूर्ण बिंदु है।
मैं एक गुप्त रूप से सुरक्षित संस्करण जोड़ना चाहता था:
RNGCryptoServiceProvider वर्ग ( MSDN या dotnetperls )
यह आईडीआईसोपायरी को लागू करता है।
using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
{
byte[] randomNumber = new byte[4];//4 for int32
rng.GetBytes(randomNumber);
int value = BitConverter.ToInt32(randomNumber, 0);
}
आप MiscUtil क्लास लाइब्रेरी के अंदर जॉन स्कीट के स्टैटिकट्रैंडिक तरीके का उपयोग कर सकते हैं जिसे उन्होंने एक छद्म यादृच्छिक संख्या के लिए बनाया था।
using MiscUtil;
...
for (int i = 0; i < 100;
Console.WriteLine(StaticRandom.Next());
मैंने COBOL उत्तर ... lol को छोड़कर इन सभी समाधानों की कोशिश की है
इनमें से कोई भी समाधान पर्याप्त नहीं था। मुझे इंट लूप के लिए एक फास्ट में रैंडम की जरूरत थी और मुझे बहुत व्यापक रेंज में भी डुप्लिकेट वैल्यू मिल रही थी। अभी तक बहुत सारे यादृच्छिक परिणामों के लिए बसने के बाद, मैंने आखिरकार एक बार और सभी के लिए इस समस्या से निपटने का फैसला किया।
यह सब बीज के बारे में है।
मैं दिशानिर्देश से गैर-अंकों को पार्स करके एक यादृच्छिक पूर्णांक बनाता हूं, फिर मैं इसका उपयोग अपने यादृच्छिक वर्ग को तुरंत करने के लिए करता हूं।
public int GenerateRandom(int min, int max)
{
var seed = Convert.ToInt32(Regex.Match(Guid.NewGuid().ToString(), @"\d+").Value);
return new Random(seed).Next(min, max);
}
अद्यतन : यदि आप रैंडम क्लास को एक बार इंस्टेंट करते हैं तो सीडिंग आवश्यक नहीं है। तो यह एक स्थिर वर्ग बनाने और बंद करने के लिए एक विधि को कॉल करने के लिए सबसे अच्छा होगा।
public static class IntUtil
{
private static Random random;
private static void Init()
{
if (random == null) random = new Random();
}
public static int Random(int min, int max)
{
Init();
return random.Next(min, max);
}
}
तो आप इस तरह स्थिर वर्ग का उपयोग कर सकते हैं ..
for(var i = 0; i < 1000; i++)
{
int randomNumber = IntUtil.Random(1,100);
Console.WriteLine(randomNumber);
}
मैं मानता हूं कि मुझे यह तरीका बेहतर लगता है।
इनबिल्ट Random
क्लास (System.Random) द्वारा उत्पन्न संख्याएँ छद्म यादृच्छिक संख्याएँ उत्पन्न करती हैं।
यदि आप सही यादृच्छिक संख्याएँ चाहते हैं, तो निकटतम हम प्राप्त कर सकते हैं "सुरक्षित छद्म यादृच्छिक जनरेटर" जो C # में क्रिप्टोग्राफ़िक कक्षाओं का उपयोग करके उत्पन्न किया जा सकता है RNGCryptoServiceProvider
।
फिर भी, यदि आपको अभी भी सही यादृच्छिक संख्याओं की आवश्यकता है , तो आपको एक बाहरी स्रोत का उपयोग करने की आवश्यकता होगी जैसे कि एक यादृच्छिक संख्या जनरेटर के लिए बीज के रूप में रेडियोधर्मी क्षय के लिए लेखांकन। चूंकि, परिभाषा के अनुसार, विशुद्ध रूप से एल्गोरिथम साधनों से उत्पन्न कोई भी संख्या वास्तव में यादृच्छिक नहीं हो सकती है।
रैंडम ऑब्जेक्ट बनाएँ
Random rand = new Random();
और इसका उपयोग करें
int randomNumber = rand.Next(min, max);
आपको new Random()
हर बार जब आपको एक यादृच्छिक संख्या की आवश्यकता होती है, तो एक बार रैंडम करने की आवश्यकता नहीं होती है, फिर जितनी बार आपको एक लूप के अंदर की आवश्यकता होती है उतनी बार उपयोग करें
new Random()
बीज के रूप में वर्तमान टिक्स का उपयोग करता है। जब आप एक ही मिलीसेकंड के भीतर (उदाहरण के लिए टिक के विपरीत) कई उदाहरणों को पलटा देते हैं, तो आपको समान मूल्य वापस मिल जाएगा।
यहाँ से संशोधित उत्तर ।
यदि आपके पास इंटेल सिक्योर कुंजी संगत सीपीयू तक पहुंच है, तो आप इन पुस्तकालयों का उपयोग करके वास्तविक यादृच्छिक संख्या और तार उत्पन्न कर सकते हैं: https://github.com/JebteK/RdRand और https://www.rdrand.com/
बस यहाँ से नवीनतम संस्करण को डाउनलोड करें , Jebtek.RdRand को शामिल करें और इसके लिए एक उपयोग कथन जोड़ें। फिर, आपको बस इतना करना है:
// Check to see if this is a compatible CPU
bool isAvailable = RdRandom.GeneratorAvailable();
// Generate 10 random characters
string key = RdRandom.GenerateKey(10);
// Generate 64 random characters, useful for API keys
string apiKey = RdRandom.GenerateAPIKey();
// Generate an array of 10 random bytes
byte[] b = RdRandom.GenerateBytes(10);
// Generate a random unsigned int
uint i = RdRandom.GenerateUnsignedInt();
यदि आपके पास कोड को निष्पादित करने के लिए एक संगत CPU नहीं है, तो बस rdrand.com पर RESTful सेवाओं का उपयोग करें। आपकी परियोजना में शामिल RdRandom आवरण पुस्तकालय के साथ, आपको बस यह करने की आवश्यकता होगी (साइनअप करने पर आपको 1000 मुफ्त कॉल प्राप्त होंगे):
string ret = Randomizer.GenerateKey(<length>, "<key>");
uint ret = Randomizer.GenerateUInt("<key>");
byte[] ret = Randomizer.GenerateBytes(<length>, "<key>");
जबकि यह ठीक है:
Random random = new Random();
int randomNumber = random.Next()
आप अधिकतर समय सीमा (न्यूनतम और अधिकतम माप) को नियंत्रित करना चाहते हैं। इसलिए आपको यह निर्दिष्ट करने की आवश्यकता है कि यादृच्छिक संख्या कहां शुरू और समाप्त होती है।
Next()
विधि दो पैरामीटर, न्यूनतम और अधिकतम स्वीकार करता है।
इसलिए अगर मैं चाहता हूं कि मेरा रैंडम नंबर 5 और 15 के बीच हो, तो मैं अभी करूंगा
int randomNumber = random.Next(5, 16)
यह वह वर्ग है जिसका मैं उपयोग करता हूं। की तरह काम करता हैRandomNumber.GenerateRandom(1, 666)
internal static class RandomNumber
{
private static Random r = new Random();
private static object l = new object();
private static Random globalRandom = new Random();
[ThreadStatic]
private static Random localRandom;
public static int GenerateNewRandom(int min, int max)
{
return new Random().Next(min, max);
}
public static int GenerateLockedRandom(int min, int max)
{
int result;
lock (RandomNumber.l)
{
result = RandomNumber.r.Next(min, max);
}
return result;
}
public static int GenerateRandom(int min, int max)
{
Random random = RandomNumber.localRandom;
if (random == null)
{
int seed;
lock (RandomNumber.globalRandom)
{
seed = RandomNumber.globalRandom.Next();
}
random = (RandomNumber.localRandom = new Random(seed));
}
return random.Next(min, max);
}
}
मैं यह प्रदर्शित करना चाहता था कि जब हर बार एक नया यादृच्छिक जनरेटर उपयोग किया जाता है तो क्या होता है। मान लीजिए कि आपके पास दो तरीके हैं या दो वर्गों में से प्रत्येक में एक यादृच्छिक संख्या की आवश्यकता होती है। और भोलेपन से आप उन्हें कोड करते हैं:
public class A
{
public A()
{
var rnd=new Random();
ID=rnd.Next();
}
public int ID { get; private set; }
}
public class B
{
public B()
{
var rnd=new Random();
ID=rnd.Next();
}
public int ID { get; private set; }
}
क्या आपको लगता है कि आपको दो अलग-अलग आईडी मिलेंगे? नहींं
class Program
{
static void Main(string[] args)
{
A a=new A();
B b=new B();
int ida=a.ID, idb=b.ID;
// ida = 1452879101
// idb = 1452879101
}
}
समाधान हमेशा एक ही स्थिर यादृच्छिक जनरेटर का उपयोग करना है। ऐशे ही:
public static class Utils
{
public static readonly Random random=new Random();
}
public class A
{
public A()
{
ID=Utils.random.Next();
}
public int ID { get; private set; }
}
public class B
{
public B()
{
ID=Utils.random.Next();
}
public int ID { get; private set; }
}
RNGCryptoServiceProvider
तो वैसे भी एक बेहतर कॉल है।
मजबूत यादृच्छिक बीज के लिए मैं हमेशा CryptoRNG का उपयोग करता हूं और समय का नहीं।
using System;
using System.Security.Cryptography;
public class Program
{
public static void Main()
{
var random = new Random(GetSeed());
Console.WriteLine(random.Next());
}
public static int GetSeed()
{
using (var rng = new RNGCryptoServiceProvider())
{
var intBytes = new byte[4];
rng.GetBytes(intBytes);
return BitConverter.ToInt32(intBytes, 0);
}
}
}
Random random = new Random ();
int randomNumber = random.Next (lowerBound,upperBound);
बस भविष्य के संदर्भ के लिए एक नोट के रूप में।
यदि आप .NET कोर का उपयोग कर रहे हैं, तो कई रैंडम उदाहरण पहले की तरह खतरनाक नहीं हैं। मुझे पता है कि यह प्रश्न 2010 का है, लेकिन चूंकि यह प्रश्न पुराना है, लेकिन इसमें कुछ आकर्षण है, इसलिए मुझे लगता है कि यह बदलाव का दस्तावेजीकरण करना अच्छी बात है।
आप इस सवाल का उल्लेख कर सकते हैं मैंने कुछ समय पहले किया था:
क्या Microsoft ने रैंडम डिफॉल्ट सीड को बदला?
मूल रूप से, उन्होंने डिफ़ॉल्ट बीज को से बदल दिया Environment.TickCount
हैGuid.NewGuid().GetHashCode()
, इसलिए यदि आप रैंडम के 2 उदाहरण बनाते हैं तो यह समान संख्याओं को प्रदर्शित नहीं करेगा।
आप फ़ाइल को .NET फ्रेमवर्क / .NET कोर (2.0.0+) से अलग देख सकते हैं: https://github.com/dotnet/coreclr/pull/2192/commits/9f6a0b675e5ac006565268554de49162c539ff66d
यह RNGCryptoServiceProvider जितना सुरक्षित नहीं है, लेकिन कम से कम यह आपको अजीब परिणाम नहीं देगा।
Interop.GetRandomBytes((byte*)&result, sizeof(int));
।
कंप्यूटर द्वारा एक नियतात्मक प्रक्रिया के माध्यम से गणना की गई संख्या, परिभाषा के अनुसार, यादृच्छिक नहीं हो सकती।
यदि आप एक वास्तविक यादृच्छिक संख्या चाहते हैं, तो यादृच्छिकता वायुमंडलीय शोर या रेडियोधर्मी क्षय से आती है।
आप उदाहरण के लिए RANDOM.ORG की कोशिश कर सकते हैं (यह प्रदर्शन को कम करता है)
Random rand = new Random();
int name = rand.Next()
दूसरे कोष्ठकों में आप जो भी मूल्य चाहते हैं, उसे सुनिश्चित करें कि आपने कोड बनाने के लिए प्रोप और डबल टैब लिखकर नाम निर्धारित किया है
यदि आप एक न्यूनतम और अधिकतम के बीच यादृच्छिक संख्या उत्पन्न करने के लिए CSRNG चाहते हैं, तो यह आपके लिए है। यह Random
सुरक्षित यादृच्छिक बीजों के साथ कक्षाओं को इनिशियलाइज़ करेगा ।
class SecureRandom : Random
{
public static byte[] GetBytes(ulong length)
{
RNGCryptoServiceProvider RNG = new RNGCryptoServiceProvider();
byte[] bytes = new byte[length];
RNG.GetBytes(bytes);
RNG.Dispose();
return bytes;
}
public SecureRandom() : base(BitConverter.ToInt32(GetBytes(4), 0))
{
}
public int GetRandomInt(int min, int max)
{
int treashold = max - min;
if(treashold != Math.Abs(treashold))
{
throw new ArithmeticException("The minimum value can't exceed the maximum value!");
}
if (treashold == 0)
{
throw new ArithmeticException("The minimum value can't be the same as the maximum value!");
}
return min + (Next() % treashold);
}
public static int GetRandomIntStatic(int min, int max)
{
int treashold = max - min;
if (treashold != Math.Abs(treashold))
{
throw new ArithmeticException("The minimum value can't exceed the maximum value!");
}
if(treashold == 0)
{
throw new ArithmeticException("The minimum value can't be the same as the maximum value!");
}
return min + (BitConverter.ToInt32(GetBytes(4), 0) % treashold);
}
}
क्षमा करें, ओपी को वास्तव में एक यादृच्छिक int
मूल्य की आवश्यकता होती है , लेकिन ज्ञान साझा करने के सरल उद्देश्य के लिए यदि आप एक यादृच्छिक BigInteger
मूल्य चाहते हैं तो आप निम्नलिखित कथन का उपयोग कर सकते हैं:
BigInteger randomVal = BigInteger.Abs(BigInteger.Parse(Guid.NewGuid().ToString().Replace("-",""), NumberStyles.AllowHexSpecifier));
मुझे लगता है कि आप नीचे की तरह समान रूप से वितरित यादृच्छिक संख्या जनरेटर चाहते हैं। C # और C ++ सहित अधिकांश प्रोग्रामिंग भाषा में रैंडम नंबर का उपयोग करने से पहले ठीक से फेरबदल नहीं किया जाता है। इसका मतलब है कि आपको एक ही नंबर बार-बार मिलेगा, जो वास्तव में यादृच्छिक नहीं है। एक ही नंबर को बार-बार ड्रा करने से बचने के लिए आपको एक बीज की आवश्यकता होती है। आमतौर पर, इस कार्य के लिए समय में टिक ठीक है। याद रखें कि यदि आप हर बार एक ही बीज का उपयोग कर रहे हैं तो आपको एक ही नंबर मिलेगा। इसलिए हमेशा अलग बीज का उपयोग करने का प्रयास करें। समय बीज के लिए एक अच्छा स्रोत है क्योंकि वे हमेशा पीछा करते हैं।
int GetRandomNumber(int min, int max)
{
Random rand = new Random((int)DateTime.Now.Ticks);
return rand.Next(min, max);
}
यदि आप सामान्य वितरण के लिए यादृच्छिक संख्या जनरेटर की तलाश कर रहे हैं, तो आप बॉक्स-मुलर परिवर्तन का उपयोग कर सकते हैं। यादृच्छिक गाऊसी चर प्रश्न में yoyoyoyosef द्वारा उत्तर की जाँच करें। चूंकि आप पूर्णांक चाहते हैं, इसलिए आपको अंत में पूर्णांक के लिए डबल मान देना होगा।
Random rand = new Random(); //reuse this if you are generating many
double u1 = 1.0-rand.NextDouble(); //uniform(0,1] random doubles
double u2 = 1.0-rand.NextDouble();
double randStdNormal = Math.Sqrt(-2.0 * Math.Log(u1)) *
Math.Sin(2.0 * Math.PI * u2); //random normal(0,1)
double randNormal =
mean + stdDev * randStdNormal; //random normal(mean,stdDev^2)
सबसे आसान तरीका शायद Random.range(1, 3)
यह है कि यह 1 और 2 के बीच एक संख्या उत्पन्न करेगा।
आप नीचे उपयोग करके यादृच्छिक बीज मूल्य के साथ कोशिश कर सकते हैं:
var rnd = new Random(11111111); //note: seed value is 11111111
string randomDigits = rnd.Next();
var requestNumber = $"SD-{randomDigits}";
उपयोग क्यों नहीं int randomNumber = Random.Range(start_range, end_range)
?
रैंडम के एक उदाहरण का बार-बार उपयोग करें
// Somewhat better code...
Random rng = new Random();
for (int i = 0; i < 100; i++)
{
Console.WriteLine(GenerateDigit(rng));
}
...
static int GenerateDigit(Random rng)
{
// Assume there'd be more logic here really
return rng.Next(10);
}
यह लेख इस बात पर ध्यान देता है कि यादृच्छिकता इतनी समस्याओं का कारण बनती है, और उन्हें कैसे संबोधित किया जाए। http://csharpindepth.com/Articles/Chapter12/Random.aspx
Random
एक धागा सुरक्षित वर्ग नहीं है। यदि आप एक एकल उदाहरण बनाते हैं, तो आपको लॉकिंग तंत्र के पीछे पहुंच को प्रतिबंधित करना चाहिए।
यादृच्छिक संख्या बनाने के लिए इन सरल चरणों का प्रयास करें:
समारोह बनाएँ:
private int randomnumber(int min, int max)
{
Random rnum = new Random();
return rnum.Next(min, max);
}
उपरोक्त फ़ंक्शन का उपयोग उस स्थान पर करें जहां आप यादृच्छिक संख्याओं का उपयोग करना चाहते हैं। मान लीजिए आप इसे टेक्स्ट बॉक्स में उपयोग करना चाहते हैं।
textBox1.Text = randomnumber(0, 999).ToString();
0 मिनट है और 999 अधिकतम है। आप जो चाहें वो मान बदल सकते हैं।
मेरे पास हमेशा ऐसे तरीके होते हैं जो यादृच्छिक संख्याएं उत्पन्न करते हैं जो विभिन्न उद्देश्यों के लिए मदद करते हैं। मुझे आशा है कि यह आपकी भी मदद कर सकता है:
public class RandomGenerator
{
public int RandomNumber(int min, int max)
{
var random = new Random();
return random.Next(min, max);
}
public string RandomString(int size, bool lowerCase)
{
var builder = new StringBuilder();
var random = new Random();
char ch;
for (int i = 0; i < size; i++)
{
ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(ch);
}
if (lowerCase)
return builder.ToString().ToLower();
return builder.ToString();
}
}
इनलाइन के लिए त्वरित और आसान, बलो कोड का उपयोग करें:
new Random().Next(min, max);
// for example unique name
strName += "_" + new Random().Next(100, 999);