2016-01-21 53 views
0

我有一個類稱爲消息,我試圖爲這個類生成多個對象,並將這些值存儲在列表中,但我的列表最後有相同的元素。 這是我的代碼。將類對象添加到列表中c#

public class Message 
    { 
     public int id { get; set; } 
     public string Data { get; set; } 
     public List<String> _messageCategories { get; set; } 
     public List<double> _relevanceScore { get; set; } 
     public Message(List<String> messageCategories, List<double> relevanceScore) 
     { 
      _messageCategories = messageCategories; 
      _relevanceScore = relevanceScore; 
     } 
    } 
public List<Message> message=new List<Message>(); 
public void Randommesg() 
     { 

      k1 = 10; 
      for (int i = 0; i <= k1; i++) 
      { 
       List<double> rscore = new List<double>(); 
       List<string> messagetype = new List<string>(); 
       Message msg = new Message(messagetype, rscore); 
       messagetype.Clear(); 
       rscore.Clear(); 
       Random r = new Random(); 
       int mnum = r.Next(6); 
       while (messagetype.Count <= mnum) 
       { 
        Random r1 = new Random(); 
        string[] arr = { "sports", "reebok", "nike", "adidas", "cookware", "home decor", "tools", "toys", "clothes", "appliances", "electronics", "phones", "computers" }; 
        int i1 = r.Next(13); 
        String mesgtype = arr[i1]; 
        if (messagetype.Contains(mesgtype)) 
        { 
         continue; 
        } 
        else 
        { 
         messagetype.Add(mesgtype); 
        } 
       } 
       while (rscore.Count <= messagetype.Count) 
       { 
        Random r1 = new Random(); 
        Double i2 = r1.NextDouble(); 
        String score1 = i2.ToString("0.#"); 
        Double score2 = double.Parse(score1); 
        rscore.Add(score2); 
       } 
       msg._messageCategories = messagetype; 
       msg._relevanceScore = rscore; 
       msg.id = i; 
       message.Add(msg); 
      } 
     } 

我期待在郵件列表中10個不同的消息,但我最終有消息相同的消息list.Can誰能幫我找到問題的所在。 預先感謝您

+0

[隨機數生成器僅產生一個隨機數(可能的重複http://stackoverflow.com/questions/767999/random-number-generator-only-generating-一個隨機數) –

回答

1

在調用NextNextDouble方法之前,您不應每次創建Random的新實例。更改Randommesg到這樣的事情:

public void Randommesg() 
{ 
    Random r = new Random(); 
    int k1 = 10; 
    for (int i = 0; i <= k1; i++) 
    { 

     List<double> rscore = new List<double>(); 
     List<string> messagetype = new List<string>(); 
     Message msg = new Message(messagetype, rscore); 
     messagetype.Clear(); 
     rscore.Clear(); 
     int mnum = r.Next(6); 
     while (messagetype.Count <= mnum) 
     { 
      string[] arr = { "sports", "reebok", "nike", "adidas", "cookware", "home decor", "tools", "toys", "clothes", "appliances", "electronics", "phones", "computers" }; 
      int i1 = r.Next(13); 
      String mesgtype = arr[i1]; 
      if (messagetype.Contains(mesgtype)) 
      { 
       continue; 
      } 
      else 
      { 
       messagetype.Add(mesgtype); 
      } 
     } 
     while (rscore.Count <= messagetype.Count) 
     { 
      Double i2 = r.NextDouble(); 
      String score1 = i2.ToString("0.#"); 
      Double score2 = double.Parse(score1); 
      rscore.Add(score2); 
     } 
     msg._messageCategories = messagetype; 
     msg._relevanceScore = rscore; 
     msg.id = i; 
     message.Add(msg); 
    } 
} 
+0

非常感謝你的工作。我非常感謝你的幫助,非常感謝。 – kalyani