01. oktober 2010 - 23:02Der er
9 kommentarer og 1 løsning
Hvis sidste 3 tal i tilfædigt udræk
Hej,
Hvis man bruger rendom er det så ikke muligt at lave noget kode der kan vise hvad de sidste 3 nummerer som er genereret er?
Jeg har burugt følgende kode til at generere nummerne med:
Private ReadOnly rng As Random = New Random Private nums As List(Of Integer) = New List(Of Integer)(New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
nrdisplay.Text = nums.Count
If nums.Count > 0 Then Dim ix As Integer = rng.Next(nums.Count) nrdisplay.Text = nums(ix).ToString nums.RemoveAt(ix) Else MessageBox.Show("Alle nummer er udtrukket") End If
Imports System Imports System.Collections.Generic Imports System.Linq
Namespace E Public Class LastN(Of T) Private lst As Queue(Of T) = New Queue(Of T) Private maxsiz As Integer Public Sub New(n As Integer) maxsiz = n End Sub Public Sub Add(o As T) lst.Enqueue(o) If lst.Count > maxsiz Then lst.Dequeue End If End Sub Public Function GetAll() As T() Return lst.ToArray End Function End Class Public Class Program Public Shared Sub Main(args As String()) Dim con As LastN(Of Integer) = New LastN(Of Integer)(3) con.Add(1) For Each v As Integer In con.GetAll Console.Write(" " & v) Next Console.WriteLine con.Add(2) For Each v As Integer In con.GetAll Console.Write(" " & v) Next Console.WriteLine con.Add(3) For Each v As Integer In con.GetAll Console.Write(" " & v) Next Console.WriteLine con.Add(4) For Each v As Integer In con.GetAll Console.Write(" " & v) Next Console.WriteLine con.Add(5) For Each v As Integer In con.GetAll Console.Write(" " & v) Next Console.WriteLine Console.ReadKey End Sub End Class End Namespace
Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Text
Namespace E Public Class LastN(Of T) Private lst As Queue(Of T) = New Queue(Of T) Private maxsiz As Integer Public Sub New(n As Integer) maxsiz = n End Sub Public Sub Add(o As T) lst.Enqueue(o) If lst.Count > maxsiz Then lst.Dequeue End If End Sub Public Function GetAll() As T() Return lst.ToArray End Function Public Overrides Function ToString() As String Dim sb As StringBuilder = New StringBuilder For Each v As T In GetAll sb.Append(" ") sb.Append(v.ToString) Next Return sb.ToString.SubString(1) End Function End Class Public Class Program Public Shared Sub Main(args As String()) Dim con As LastN(Of Integer) = New LastN(Of Integer)(3) con.Add(1) Console.WriteLine(con) con.Add(2) Console.WriteLine(con) con.Add(3) Console.WriteLine(con) con.Add(4) Console.WriteLine(con) con.Add(5) Console.WriteLine(con) Console.ReadKey End Sub End Class End Namespace
Jeg har prøvet lidt af hvert, men kan ikke få det til virke. Så her er hele koden:
Public Class Form1 ' Koden er til tælleren. Public int As Integer = 0
'Arry til de tal der skal vises Private ReadOnly rng As Random = New Random Private nums As List(Of Integer) = New List(Of Integer)(New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = nums.Count
If nums.Count > 0 Then Dim ix As Integer = rng.Next(nums.Count) Label1.Text = nums(ix).ToString nums.RemoveAt(ix) Else MessageBox.Show("Alle nummer er udtrukket") End If End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Stop() End Sub End Class
Håber du kan hjælpe mig, hvis det er et spørgsmål om points så sig til.
Public Class Form1 ' Koden er til tælleren. Public int As Integer = 0
'Arry til de tal der skal vises Private ReadOnly rng As Random = New Random Private nums As List(Of Integer) = New List(Of Integer)(New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) Private con As LastN(Of Integer) = New LastN(Of Integer)(3) ' <----
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Label1.Text = nums.Count
If nums.Count > 0 Then Dim ix As Integer = rng.Next(nums.Count) Label1.Text = nums(ix).ToString con.Add(nums(ix) ' <---- nums.RemoveAt(ix) Label3.Text = con.ToString ' <---- Else MessageBox.Show("Alle nummer er udtrukket") End If End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Stop() End Sub End Class
Kan få det til at virke en gang. Når jeg stopper den får jeg følgende fejl i design mode:
"The class Form1 can be designed, but is not the first class in the file. Visual Studio requires that designers use the first class in the file. Move the class code so that it is the first class in the file and try loading the designer again."
Går ud fra at koden i kommentar #4 Skal stå ovenover Public Class Form1
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.