2016-03-23 13 views
-4

Sıfırlar ve C# dizilerinde nasıl oluşturulur? Dizinin uzunluğu n ve tam olarak k birimler, burada k < = n. Birimler rastgele konumlarda k bulunmaktadır. Örneğin n = 10 ve k = 3 eğer: 0010010100 veya 0011010000.Birler ve sıfırlar dizisi

Kod

static void InitIntArray(int[] arr) 
{ 
    Random rnd = new Random(); 

    for (int i = 0; i < arr.Length; i++) 
    { 
     int k=2; 
     for (int j = 0; j < k; j++) 
     { 
      arr[j] = 1; 
     } 
     arr[i] = 0; 
    } 

    int[] arr1 = new int[5]; 
    InitIntArray(arr1); 

    foreach (int i in arr1) 
    { 
     Console.Write(i); 
    } 

    Console.WriteLine(); 
} 

Çıktı 11000. Ben 01010 veya 00101.

+2

Yazdığınız bazı kodları gösterin ve neden bunu yapmaya çalıştığınızı bize bildirin. – Seano666

cevap

1

gibi bir şey elde edemez ise Rastgele sayıları (örneğin, Random.NextDouble() ile) almak için Rastgele örneğinin işlevlerini kullanmanız ve ardından dizinin her öğesinin sıfır veya bir olup olmadığına karar vermek için bu sayıları kullanmanız gerekir. Aksi halde, kodunuz beklediğiniz gibi her seferinde aynı sonucu verecektir.

static void InitIntArray(int[] arr, int k){ 
    Random rnd = new Random(); 
    for(int i = 0; i < arr.Length; i++) 
    { 
     //Probability this array element is a 1 
     double p = (double)k/(arr.Length-i); 
     if(rnd.NextDouble() < p) 
     { 
      arr[i] = 1; 
      k--; 
     } 
     else 
     { 
      arr[i] = 0; 
     } 
    } 
} 
İlgili konular