2012-04-28 67 views
-1

我是一個新手,從iOS轉移到WP7。如何使用for循環將元素加載到數組中? C#

我正在生成一個隨機數列,我想存儲到一個數組中。在iOS中,它是這樣的

for(int i=0; i < num; i++) { 

     int rand = arc4random_uniform(70); 

     if([rand_array containsObject:[NSNumber numberWithInt:rand]]) { 

      i--; 

     } 

我已經搜索,谷歌搜索,但認爲這是我可以問一個問題的地方。請幫助我。

+0

爲了讓這成爲一個建設性的問題,你必須解釋循環的作用,並提出一個關於特定問題的問題。也許你的代碼只是不完整的,但我無法弄清楚它的功能。 – Gabe 2012-04-28 17:41:46

+4

「我是一個新手,從iOS轉移到WP7」 - 爲自己做個忙,先學習C#* *,理想情況下使用控制檯應用程序,以便在最終解決所有額外複雜問題之前知道*語言* UI。 – 2012-04-28 17:41:56

+0

你見過這個:http://stackoverflow.com/questions/2351308/random-number-generator-in-c-sharp-unique-values – 2012-04-28 17:42:57

回答

2
int min = 1; 
int max = 4; 
int num = 3; 
Random r = new Random(); 
Int[] ar ; 
ar = new Int[num]; // Creates array with 3 palces {ar[0],ar[1],ar[2]) 
for(i = 0;i =< num - 1;i++) { 
ar[i] = r.Next(min,max); // generate random number between 1-4 (include 1 & 4) 
} 

我覺得這是應該工作(或我不明白你)。 好運氣=]

+0

非常感謝...這對我有用! – Xander 2012-04-28 18:17:36

1

我沒有看到你的代碼的意義。我會用一個List。

for(int i=0; i < num; i++) 
    { 
    int rand = arc4random_uniform(70);//hope you know what you did here, I don't 

    if(yourList.Contains(rand)) 
     i--; 
    else 
     yourList.Add(rand); 
    } 

如果列表中不包含隨機數,這將增加它,否則它只會重複。

+0

謝謝你的答案,它幫助我在我的項目 – Xander 2012-04-28 18:18:45

1

在C#中做這樣的事情:

List<int> numbers = new List<int>(); 

for (int i = 0; i < num, i++) { 

    int rand = GetARandomNumber(); 
    if (!numbers.Contains(rand)) { 
     numbers.Add(rand); 
    } else { 
     i--; 
    } 

} 

你也很可能做好將其轉換爲一個while循環:

List<int> numbers = new List<int>(); 

while (numbers.Count < num) { 

    int rand = GetARandomNumber(); 
    if (!numbers.Contains(rand)) { 
     numbers.Add(rand); 
    } 

} 
+0

謝謝你的答案... – Xander 2012-04-28 18:19:15

1

這很簡單,真的!您的代碼的直接端口將如下所示:

List<int> rand_array = new List<int>(); 


for(int i = 0; i < num; i++) 
{ 
    int rand = RandomHelper.GetInt(0, 70); 
    if(rand_array.Contains(rand)) 
    { 
     i--; 
     continue; 
    } 

    rand_array.Add(rand); 
} 

要在C#中生成隨機數,有一個恰當地稱爲「隨機」的類。你只有真正需要使用Random類的一個實例來生成數字,所以如果你想要的東西是這樣的:

static class RandomHelper 
{ 
    static Random rng = new Random(); // Seed it if you need the same sequence of random numbers 

    public static int GetInt(int min, int max) 
    { 
     return rng.Next(min, max); 
    } 
} 
+0

添加靜態到你的隨機類變量。 – 2012-04-28 18:13:53

+0

感謝您的幫助,我現在需要看看基本知識:( – Xander 2012-04-28 18:18:14

2

Enumerable.Range(1, 70) 1至70 然後我們打亂他們像一副撲克牌生成的數字。

int[] randomNumbers = Enumerable.Range(1, 70).Shuffle(new Random()).ToArray(); 

這需要在相同的文件夾單獨的類。

public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source, Random random) 
{ 
    T[] list = source.ToArray(); 
    int count = list.Length; 

    while (count > 1) 
    { 
     int index = random.Next(count--); 
     yield return list[index]; 
     list[index] = list[count]; 
    } 
    yield return list[0]; 
} 

這是你想要的嗎?

+0

豎起大拇指...感謝這是一個詳細的版本。 – Xander 2012-04-28 18:39:03

相關問題