kostenloser Webspace werbefrei: lima-city


VB Zufall

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    impirial-war

    impirial-war hat kostenlosen Webspace.

    Ich habe den Code
    Dim I as Integer
         I=CInt(100*Rnd())
            If I > 50 Then
                String = "A"
            Else
                String = "B"
            End If

    Aber String ist immer "A".
    I ist imer genau 70
    Wenn ich schreibe
    Dim I As Integer
            I = Int(Rnd())
            MsgBox(CStr(I))

    kommt immer I=0
    Was habe ich falsch gemacht. String sollte eigentlich nur in 50% aller fälle "A" sein.
    mfg

    Beitrag zuletzt geändert: 27.11.2009 16:50:19 von impirial-war
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Ein Blick in die Dokumentation von VB hätte genügt (F1-Taste):
    Die Rnd-Funktion gibt einen Wert zurück, der kleiner als 1, aber größer als oder gleich Null ist.

    Der Wert von Zahl bestimmt, wie Rnd eine Zufallszahl generiert:

    Für jeden gegebenen Standardwert wird dieselbe Zufallszahlenfolge generiert, weil bei jedem nachfolgenden Aufruf der Rnd-Funktion die vorherige Zahl als Startwert für die nächste Zahl in der Folge dient.

    Bevor Sie Rnd aufrufen, verwenden Sie die Randomize-Anweisung ohne Argument, um den Zufallszahlengenerator mit einem Startwert zu initialisieren, der auf dem Systemzeitgeber basiert.

    Verwenden Sie die folgende Formel, um ganzzahlige Zufallszahlen innerhalb eines bestimmten Bereichs zu erzeugen:

    Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)

    Obergrenze steht hier für die größte Zahl des Bereichs und Untergrenze für die kleinste Zahl des Bereichs.

    Anmerkung Wenn Sie Folgen von Zufallszahlen wiederholen möchten, rufen Sie Rnd mit einem negativen Argument auf, unmittelbar bevor Sie Randomize mit einem numerischen Argument verwenden. Durch Verwenden von Randomize mit demselben Wert für Zahl wird die vorherige Folge nicht wiederholt.



    Da Rnd() zwischen 0 und 1 liegt und du den Wert von Rnd() in einen Integer umwandelst, wird dieser immer 0.
    Richtig wäre also Int(Rnd() * 10) für einstellige Zufallszahlen und Int(Rnd() * 100) für zweistellige Zufallszahlen usw.
  4. Autor dieses Themas

    impirial-war

    impirial-war hat kostenlosen Webspace.

    Bei
    Dim I As Integer
            I = Int(Rnd() * 100)
            MsgBox(CStr(I))

    kommt aber trotzdem immer 17
  5. Das Zauberwort heißt Randomize

    Schreib mal deinen Code so:
    Randomize
    Dim I as Integer
         I=CInt(100*Rnd())
            If I > 50 Then
                String = "A"
            Else
                String = "B"
            End If
  6. v************r

    Das Problem dabei ist, Rnd() wird immer mit 0 initalisiert, wobei der Algorithmus immer gleich abläuft (einen echten Zufall gibt es also nicht). Mit der Funktion Randomize wird Rnd() nach der aktuellen Zeit initialisiert (also fast ein Zufall)
  7. Dim random As New Random
    Dim I as Integer
    
    I=CInt(100 * random(minimalwert, maximalwert))
    
    If I > 50 Then
        String = "A"
    Else
        String = "B"
    End If


    oder so in der art
  8. Ich habs immer so gemacht:

    Dim rand As New Random()
            Dim number = rand.Next(TextBox3.Text, TextBox4.Text)
            TextBox5.Text = number.ToString


    Funktioniert auch einwandfrei.
  9. impirial-war schrieb:
    Ich habe den Code
    Dim I as Integer
         I=CInt(100*Rnd())
            If I > 50 Then
                String = "A"
            Else
                String = "B"
            End If

    Aber String ist immer "A".
    I ist imer genau 70
    Wenn ich schreibe
    Dim I As Integer
            I = Int(Rnd())
            MsgBox(CStr(I))

    kommt immer I=0
    Was habe ich falsch gemacht. String sollte eigentlich nur in 50% aller fälle "A" sein.
    mfg


    dim zufall as integer
    dim text as string
    
    randomize timer
    zufall = int(rnd * 100)
    select case zufall
    	case < 50:
    		text = "B"
    	case > 50:
    		text = "A"
    end select
    Msgbox text
  10. Ich schätze mal, das das prob mit dem Rnd() einfach am Integer liegt, also warum den nich einfach zum double machn?
    denn müsste es klappen ;-)
  11. Hinweis:
    Dazu gibt es auch ein Tutorial in Lima-City.

    Wobei ich finde, dass man dieses mal überarbeiten sollte : - )
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!