C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 67 を表示中)
■38376 / )  Re[4]: シャッフル
□投稿者/ やじゅ (1093回)-(2009/07/12(Sun) 19:22:45)
やじゅ さんの Web サイト
2009/07/12(Sun) 19:48:07 編集(投稿者)
No38369 (ウヌ さん) に返信
>>Tips7:トランプのシャッフル
>>http://www.interq.or.jp/www-user/komurak/tips/tranp.html
> 
> このサイトも見たんですが、それでも分からなかったのです。それに、そのまま実行すると青線ひかれます。

青線が引かれる原因の箇所である、iの型をLong→Integerに変更すればいいです。

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim colBefore As Collection
        Dim colAfter As Collection
        Dim i As Integer  'Long→Integerに変更

        colBefore = New Collection
        colAfter = New Collection

	'colBefore にセットされる値
	'1,2,3,4,5,6,7,8,9,10,11,12,13
        For i = 1 To 13
            colBefore.Add(CStr(i))
        Next

	'colBefore が無くなるまで繰り返す
        Do Until colBefore.Count = 0
	  '1回目 1〜13 の中から乱数値を取得 例 i=5   	
	  '2回目 1〜12 の中から乱数値を取得 例 i=9   	
	  '3回目 1〜11 の中から乱数値を取得 例 i=3   	
            i = Int(Rnd(1) * (colBefore.Count - 1)) + 1

	  '1回目 colAfterに乱数値を登録 例 i=5
	  '2回目 colAfterに乱数値を登録 例 i=9
	  '3回目 colAfterに乱数値を登録 例 i=3
            colAfter.Add(colBefore.Item(i))

	  '既にcolAfterに登録した乱数値を削除(同じ乱数値を出さないため)
	  '1回目 colBeforeを1つ削除(乱数値) 例 i=5
	  '2回目 colBeforeを1つ削除(乱数値) 例 i=9
	  '3回目 colBeforeを1つ削除(乱数値) 例 i=3
            colBefore.Remove(i)
        Loop

	'colAfterにシャッフルされた値がセットされたので、全て表示   	
        For i = 1 To 13
            Debug.Print(colAfter.Item(i))
        Next

   End Sub

返信 編集キー/


管理者用

- Child Tree -