8.7. Tasodifiy sonlar generatori Ba’zi xollarda massivni to‘ldirish uchun tasodifiy sonlardan foydalanishga to‘g‘ri keladi. C# da tasodifiy sonlarni Random sinfi shablonidan foydalanib hosil qilinadi. Tasodifiy sonlarni generatsiya qilish quyidagicha:
Random = new Random(); =.Next([tasodifiy sonning quyi chegarasi][,][tasodifiy sonning yuqori chegarasi]). Masalan:
0..100 oraliqdagi tacodifiy sonni generatsiya qilish uchun:
Random r=new Random();
int a=r.Next(100);
Console.WriteLine(a);
…
Agar 500…1000 gacha bo‘lgan tasodifiy sonni generatsiya qilish uchun quyidagicha dasturdan foydalaniladi:
Random r=new Random();
int a=r.Next(500,1000);
Console.WriteLine(a);
Ma’ruzaga doir misollar Listing 8.3. Misol:Bir o‘lchamli Massivning 2 yoki undan ortiq takrorlanuvchi elementlarini sonini aniqlang va ularni boshqa songa almashtiring
using System; namespace zadacha_Massiv { class Program { static void Main(string[] args) { Console.Write("Massiv o`lchamini kiriting:"); int n=int.Parse(Console.ReadLine()); int[] massiv = new int[n]; int[] tmparr = new int[n]; int rnn = n+1; Random rnd=new Random(); Console.WriteLine("Massivning joriy elementlari"); for (int i = 0; i < n; i++) { massiv[i]=rnd.Next(rnn); //{0} o‘rniga i, {1} o‘rniga massiv[i] qo‘yilib chop qilinadi. Console.WriteLine("massv[{0}]={1}",i,massiv[i]); } Console.WriteLine(); Array.Copy(massiv,tmparr,n); int tmp = 0; //birinchi tekshiruvdada massiv dagi 0 ga teng bo'lgan elementni tekshirib olish uchun int sch = 0; for (int k = 0; k < n; k++) { if (tmp == tmparr[k]) { sch++; tmparr[k] = 0; if (sch > 1) { l1: int a = rnd.Next(rnn); if (Array.IndexOf(massiv, a) != -1) goto l1; else massiv[k] = a; } } } if (sch == 0) { Console.WriteLine("massiv massivida {0} ga teng elementlar soni: {1} ta", tmp, 1); } else { Console.WriteLine("massiv massivida {0} ga teng elementlar soni: {1} ta", tmp, sch); } for(int i=0;i { tmp = tmparr[i]; sch = 0; if (tmp==0) continue; for (int k = 0; k < n; k++) { if (tmparr[k] == 0) continue; else if (tmp == tmparr[k]) { sch++; tmparr[k] = 0; if (sch > 1) { l2: int a = rnd.Next(rnn); if (Array.IndexOf(massiv, a) != -1) goto l2; else massiv[k] = a; } } } if (sch == 0) { Console.WriteLine("massiv massivida {0} ga teng elementlar soni: {1} ta", tmp, 1); } else { Console.WriteLine("massiv massivida {0} ga teng elementlar soni: {1} ta", tmp, sch); } } int j = -1; foreach (int i in massiv) { j=j+1; Console.Write("massv[{0}]={1}\t", j, i); Console.WriteLine("tmparr[{0}]={1}", j, tmparr[j]); } Console.WriteLine(); Console.ReadKey(); } } }