2016-07-01 17 views
0

私は40の名前のリストと40のピクチャボックスのリストを持っています。これらの名前をピクチャボックスに無作為に表示したいのです。ランダムとユニーク番号

私は努力しましたが、私の努力は無益です。どんな援助も訴えられるでしょう。

 Random r = new Random(); 

     List<int> list = Enumerable.Range(1, box.Count).ToList(); 
     List<int> rndList = new List<int>(); 
     Random rnd = new Random(); 
     int no = 0; 
     for (int i = 0; i < box.Count; i++) 
     { 
      no = rnd.Next(0, list.Count); 
      rndList.Insert(i, no); 
      list.Remove(no); 
     } 

     for (int i = 0; i < box.Count; i++) 
     { 
      System.Reflection.Assembly sysrefass = System.Reflection.Assembly.GetExecutingAssembly(); 
      var rm = new System.Resources.ResourceManager(sysrefass.GetName().Name + ".Properties.Resources", ((System.Reflection.Assembly)sysrefass)); 
      box[i].Image = (Image)rm.GetObject(rndList[i].ToString()); 

     } 
+0

あなたが実際にランダムなアイテムを望んでいない、どのようなあなたがしたいのは、アイテムのリストをシャッフルすることです。あなたが使用できるこのサイトの多くの例があります –

答えて

-1

だけ

​​

で例えば、序順にbox[]を記入して、ランダムな値またはGuidOrderBy()を使用します。

var randomizedBox = box.OrderBy(b => rnd.Next).ToArray(); 
var randomizedBox2 = box.OrderBy(b => Guid.NewGuid()).ToArray(); 
+0

ここで書いた2番目のステートメントをどこに置く必要があるのか​​分かりません。 –

+0

これは[良いアイデア]ではありません(http://stackoverflow.com/questions/1287567/is-using-random-and-orderby-a-good-shuffle-algorithm) – dotctor

+0

最後のループの直後に使用できます。また、 'box = box.OrderBy(b => rnd.Next).ToArray();'のような同じ変数を再利用することもできますが、 'box'に変数に関する余分な情報が含まれていないので不明瞭になる可能性があります。 ボックス配列を塗りつぶした後、この行を置く必要があります。 –