2016-11-21 2 views
-1

リストボックス内に現在含まれている数字をシャッフルしようとしています。リストボックス内の数字コンテンツを並べ替え

は、しかし、今、私は任意のコンテナまたは配列を使用せずにシャッフルしようとしているが、問題そうすることを持っておりますが、私は、配列でこれを行うことができる午前私のインデックス

とエラーを取得します。

this.index = 0; 
int a = Convert.ToInt32(lstHoldValue.Items.Count); 
lstHoldValue.Items.Clear(); 

for (int i = 0; i < a; i++) 
{ 
    int idx = rnd.Next(i, a); 

    //swap elements 
    int tmp = Convert.ToInt32(lstHoldValue.Items[i]); 

    (lstHoldValue.Items[i]) = Convert.ToInt32(lstHoldValue.Items[idx]); 
    (lstHoldValue.Items[idx]) = Convert.ToInt32(tmp); 
    lstHoldValue.Items.Add("\t" + Convert.ToInt32(lstHoldValue.Items[i]));//show array in a listbox      

} 
+0

を格納されているアイテムは、あなたがリスト内の項目の金額を取得クリアし、その後、あなたはリストをクリア。だからこれはあなたが最初に間違っている99%の量を作る効果があります。 – Sayse

+0

ありがとうございますが、その数字は2回目の数字を繰り返すようです。リストラインに追加することで、クリアを取って –

+0

です。本当にリストのコピーを作ってから、そのコピーを次のように変更する必要があります。望むなら、そのリストを使用するようにしてください – Sayse

答えて

0

this.index = 0; //これは何ですか?

int a = listHoldValue.Count; //カウントは、デフォルトでは整数を返す

// lstHoldValue.Items.Clear()。 //この行を削除し、それが

for (int i = 0; i < a; i++) 
{ 
    int idx = rnd.Next(i, a); 

//swap elements 


int tmp = Convert.ToInt32(lstHoldValue.Items[i]); 
     lstHoldVAlue.Items.Insert(i,lstHoldValue.Items[idx]); 
    (lstHoldValue.Items[i]) = Convert.ToInt32(lstHoldValue.Items[idx]); 
    (lstHoldValue.Items.Insert(idx,temp); 
lstHoldValue.Items.Add("\t" + Convert.ToInt32(lstHoldValue.Items[i]));//this line is redundant because you have already added item[i] at index [idx] 

}

関連する問題