Frage bezüglich Zahlengenerator

  • VB.NET

Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    Frage bezüglich Zahlengenerator

    Hey.

    Ich habe ein Programm was mir per Buttonklick zufällig eine Zahl generiert zwischen 1 und 10000.

    Wenn jetzt z.B. die Zahl 50 generiert wird, soll beim erneuten klicken auf den Button immer wieder die selbe
    Zahl kommen, also 50.

    Geht das irgendwie?

    Wenn man das Programm neu öffnet, wieder per Button irgendeine Zahl erhalten z.B. 14 und dann halt immer
    die selbe Zahl also 14.

    MfG.
    Also in erster Linie,nein...
    Wie der Name ja sagt [Zufall]/Random...

    Doch Du kannst den random Integer in eine Variable speichern, und solange subtrahieren/addieren,bis Du auf x (z.B. 50) kommst...

    Beispiel:

    VB.NET-Quellcode

    1. Dim x As New Random
    2. Dim EINDEUTIG As Integer
    3. Dim GeneratedZahl As Integer
    4. GeneratedZahl = x.Next(0, 1001)
    5. MessageBox.Show(GeneratedZahl)
    6. EINDEUTIG = EINDEUTIG - EINDEUTIG + GeneratedZahl
    7. MessageBox.Show(EINDEUTIG)


    Mfg.eniking1998

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „enIking1998“ ()

    ich würde das so lösen:

    VB.NET-Quellcode

    1. dim zufallszahl as integer = 0
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. if zufallszahl = 0 then
    4. ' hier die zufallszahl generieren...
    5. Else
    6. wasauchimmer()
    7. end if
    8. End Sub
    9. private Sub wasauchimmer
    10. ' Hier eben das machen, was er auch immer mit der Zahl machen soll...
    11. End Sub


    EDIT: und nicht vergessen, es ist nicht wirklich "random" ich würde da in Zufallszahlen noch Teile von Uhrzeit oder so einbauen, dann ist es eine "echtere" Zufallszahl, sonst wirst Du schnell merken, dass dir Zahlen sehr bekannt vorkommen, weil sie immer auftauchen
    Sieh mein Code : OO

    VB.NET-Quellcode

    1. Dim x As New Random
    2. Dim EINDEUTIG As Integer
    3. Dim GeneratedZahl As Integer
    4. GeneratedZahl = x.Next(0, 1001)
    5. MessageBox.Show(GeneratedZahl)
    6. EINDEUTIG = EINDEUTIG - EINDEUTIG + GeneratedZahl
    7. MessageBox.Show(EINDEUTIG)


    Das generiert die zufällig Gewählte Zahl nochmal...OHNE IF-**

    Mfg.eniking1998
    Unsinn....
    Dein Code Löscht Eindeutig, indem er sich von sich selber abzieht und durch die neue Random ersetzt und zweitens ist das unsauber , wenn schon dann SO:

    VB.NET-Quellcode

    1. Dim x As New Random
    2. Dim EINDEUTIG As Integer
    3. Dim GeneratedZahl As Integer
    4. GeneratedZahl = x.Next(0, 1001)
    5. MessageBox.Show(GeneratedZahl.ToString)
    6. EINDEUTIG = EINDEUTIG - EINDEUTIG + GeneratedZahl
    7. MessageBox.Show(EINDEUTIG.toString)


    Sonst gibt es Ärger mit Option Strict On !
    Er meinte die zufällig-gezogene Zahl,im Int_ speichern und jedes Mal wenn eine neue rndm_Int gezogen wird, diese Zahl sein muss,
    die davor gezogen wurde...

    Edit:
    Ich habs im VB-Paradise Quellcode zusammgeschrieben...

    Und nochmals Edit, an meinem Vorposter...genau das wollte doch der TE...

    Dass sich die randomized Zahl nochmals zieht...


    Mfg.eniking1998
    Was er wollte ist nach meinem Verständnis:
    Er drückt einen Button... es wird eine Zahl generiert...
    Und jedes Mal, wenn er diesen Button wieder drückt, soll diese generierte Zahl ausgegeben werden...
    Also wird sie nach meinem Verständnis nur 1 mal erstellt und dann immer wieder benutzt (bis zum nächsten Programmstart)

    EDIT: OMG Gonger... Du hast ja ein IF benutzt :) (Nur ein Scherz Eniking :) )
    Zitat vom TE:
    Wenn jetzt z.B. die Zahl 50 generiert wird, soll beim erneuten klicken auf den Button immer wieder die selbe

    Zahl kommen, also 50.
    Ehmmm...

    Das kann man so lösen:

    VB.NET-Quellcode

    1. Dim x As New Random
    2. Dim EINDEUTIG As Integer
    3. Dim GeneratedZahl As Integer
    4. GeneratedZahl = x.Next(0, 1001)
    5. MessageBox.Show(GeneratedZahl)
    6. EINDEUTIG = EINDEUTIG - EINDEUTIG + GeneratedZahl
    7. MessageBox.Show(EINDEUTIG)



    Die randomized Zahl wird durch sich selbst subtrahiert und mit der Zahl die davor gezogen wurde addiert,sodass man immer wieder DIE ZAHL...mit der man am ANFAG gezogen hat,NOCHMALS UND NOCHMALS...zu ziehen...




    Mfg.eniking1998
    neieeen

    Eindeutig = Eindeutig - Eindeutig heisst für mich Eindeutig = 0
    und 0 + NEUE Zufallszahl ist eine NEUE Zufallszahl....
    Du hast einen Denkfehler...

    EDIT: Messagebox(Integer) = Option Strict On MECKER !
    also Messagebox(integer.tostring)
    @compufreak

    Hier:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim x As New Random
    4. Dim EINDEUTIG As Integer
    5. Dim GeneratedZahl As Integer
    6. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    7. GeneratedZahl = x.Next(0, 10001)
    8. MessageBox.Show(CStr(GeneratedZahl))
    9. End Sub
    10. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    11. EINDEUTIG = x.Next(0, 1001)
    12. MessageBox.Show("Vorher : " & CStr(EINDEUTIG)) 'Vorher
    13. EINDEUTIG = EINDEUTIG - EINDEUTIG + GeneratedZahl
    14. MessageBox.Show("Nachher " & CStr(EINDEUTIG)) 'Danach
    15. End Sub
    16. End Class


    Damit gerneriert er die Zahl aus dem Form_Load,jedes Mal auf's Neue, wenn er auf den Button klickt...

    Beispiel:
    Im Load wird 1 gezogen...

    Nun wird via Buttonklick,der neuer Zufallswert - neuer Zufallswert + Der im Formload variierter gerechnet

    ALSO,
    ist die Zahl nun immer 1,bis die Form wieder neu geladen wird...

    Mfg.eniking1998

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „enIking1998“ ()

    enIking1998 schrieb:

    VB.NET-Quellcode

    1. Dim x As New Random
    2. Dim EINDEUTIG As Integer
    3. Dim GeneratedZahl As Integer
    4. GeneratedZahl = x.Next(0, 1001)
    5. MessageBox.Show(GeneratedZahl)
    6. EINDEUTIG = EINDEUTIG - EINDEUTIG + GeneratedZahl
    7. ' Eindeutig = 2 | Eindeutig - Eindeutig (2-2 = 0) = 0 -> Eindeutig = GeneratedZahl
    8. EINDEUTIG = GeneratedZahl '-> gleicher Effekt
    9. MessageBox.Show(EINDEUTIG)


    Der TE will doch, soweit ich verstanden habe, nur folgendes:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim zahl As Integer = -1
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. If zahl = -1 Then
    6. Dim rnd As New Random
    7. zahl = rnd.Next(0, 1001)
    8. End If
    9. MsgBox(zahl)
    10. End Sub
    11. End Class

    Wenn ich das nur falsch Verstanden habe -> bescheid sagen ;)

    Gruß,
    Neoner