投稿者 じょう  (学生) 投稿日時 2010/4/28 12:03:27
るしぇさん、はじめまして。

私、まだ本当に.NETの勉強始めたばっかりで皆さんにとって常識なことでも
全然分からないんです。
なのでどうしてそうなるのか・・・というアプローチ方法を示してもらえると助かります。

魔界の仮面弁士さん

遅くなってしまいましたが、作成した部分のソースを貼ります。

Public Class Form1

    Dim list As New List(Of Integer)

    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
        Me.Timer1.Tag = 50
        Me.Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs)Handles Timer1.Tick
        Dim MyRandom As New Random
        Me.Label1.Text = MyRandom.Next(list.Count)

        Timer1.Tag = Timer1.Tag - 1
        If Timer1.Tag <= 0 Then
            Timer1.Stop()

            list.Remove(Me.Label1.Text)
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)Handles Me.Load
        For i As Integer = 1 To 10
            list.Add(i)
        Next
    End Sub
End Class

この実装だと、既出の数字も出てしまいます。
Nextの引数の渡し方が問題なのかと思いますが・・・

>Listに残ってる数字の個数だけ分かればいいでしょ?
リストに残っているのが1と3と5でもリストの個数(3)を引数にすると「0~2までのランダムな整数を取得する」となりませんか?
そうすると既出でリストには残ってない数字「2」がでてしまうんです・・・

一生懸命色々な情報を見て考えたんですけど、「リストの個数を指定する」という考え方がわかりません・・・

またアドバイスよろしくお願いします。