PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [S] Nummerngenerator



MIIIK
01.05.2010, 21:07
Hallo ,

ich möchte gerne einen kleinen "keygen" schreiben , er soll einfach nur in 12 Textfelder jeweils eine 4 stellige zufälluge zahl generieren .

Wie löse ich das am besten ?

wen man diese methode hier nutzt kann man ja immer nur vorgegebene zahlen eintragen ...


Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim key As Integer
key = Int(Rnd() * 10)
Select Case key
Case 1
TextBox1.Text = "TEXT HERE"
Case 2
TextBox1.Text = "TEXT HERE"
Case 3
TextBox1.Text = "TEXT HERE"
Case 4
TextBox1.Text = "TEXT HERE"
Case 5
TextBox1.Text = "TEXT HERE"
Case 6
TextBox1.Text = "TEXT HERE"
Case 7
TextBox1.Text = "TEXT HERE"
Case 8
TextBox1.Text = "TEXT HERE"
Case 9
TextBox1.Text = "TEXT HERE"
Case 10
TextBox1.Text = "TEXT HERE"
End Select
End Sub

und das möchte ich nicht , es sollen wirklich zufällige zahlen sein , kein algo oder sonst was .

also sowas wie Das hier ,


Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x(7000) As Integer
For i = 0 To 7000
x(i) = Rnd() * 200000
TextBox1.Text = (x(i))
Next
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Randomize()
End Sub
End Class


aber die zahlen Müssen 4 stellig sein und bei 1000 anfangen .

Wie bekomm ich das hin

MfG MIIIK

EBFE
01.05.2010, 21:54
Mathe ist auch zu was nützlich :D
Rnd Function (Visual Basic) (http://msdn.microsoft.com/en-us/library/f7s023d2%28VS.80%29.aspx)


' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
Dim value As Integer = CInt(Int((6 * Rnd()) + 1))(das ist Beispielcode von MS Seite ;) )
da du 4 Stelligen Code ab 1000 brauchst:
rnd() liefert eine zufällige Zahl x mit 0 =< x <1
wir wollen mit 1000 starten und bis 10000 gehen.
Also soll das Ergebnis von Rnd einfach mit:
10000-1000=9000
multipliziert werden.
D.h wir haben dann etwas zwischen
0 und 9000. Addieren 1000 hinzu und haben immer eine zufällige Zahl
1000<=Zahl<10000


Dim value As Integer = CInt(Int((9000 * Rnd()) + 1000))

MIIIK
01.05.2010, 22:13
also bei dem max von 9999

muss ich die
Dim value As Integer = CInt(Int((9000 * Rnd()) + 1000))
auf 8999 anstatt 9000 setzen ?

dann habe ich direkt noch eine frage wie kann ich eine comboBox als "If" Object einbinde ?


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ComboBox1.SelectedIndex = 0
If ComboBox1.Items.Contains("Please Select") Then
MsgBox("Please Select")

Else
generate()
End If

End SubFunktioniert nicht

er setzt mir dann automatisch den "Please Select" Punkt obne in die liste und gibt mir die MSG Box

wen ich eine andere auswähle kommt das dennoch

EBFE
01.05.2010, 23:27
also bei dem max von 9999

muss ich die
Dim value As Integer = CInt(Int((9000 * Rnd()) + 1000))
auf 8999 anstatt 9000 setzen ?

ich hab hier kein VB zur Hand ;)
Aber die Doku sagt ja, dass Rand eine Zahl zwischen 0 und 1 liefert:
0<=x<1
(oder umgangssprachlich: größer gleich 0 bis zur 1 "ausschließlich")
d.h es ist nie gleich 1.
Und 9000 * etwas kleiner 1 ist immer kleiner 9000 ;)
Daher musst du es nicht unbedingt auf 8999 setzen


dann habe ich direkt noch eine frage wie kann ich eine comboBox als "If" Object einbinde ?

Wie gesagt, kein VB zur Hand, schau dir aber mal
ComboBox.SelectedItem-Eigenschaft (System.Windows.Forms) (http://msdn.microsoft.com/de-de/library/system.windows.forms.combobox.selecteditem.aspx)
an. Also ComboBox1.SelectedItem
bsp:


Dim selectedItem As Object
selectedItem = comboBox1.SelectedItem
if (selectedItem.ToString()=="mein Text) bla

$_staX
01.05.2010, 23:37
und das möchte ich nicht , es sollen wirklich zufällige zahlen sein , kein algo oder sonst was .


Geht nicht! Ein Computer kennt keinen Zufall!