Zufallszahl in %!
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.
-
-
-
-
-
-
rotherford schrieb:
Hä?
Wie zu 10%?
Er meint, soweit ich das verstanden habe, dass mit einer 10%igen Chance "Win" steht, dass zu einer 20%igen Chance "WIN2" steht etc.
LG -
-
Wenn ich es richtig verstanden habe, kommt es darauf an wieviele versuche es sind:
relative häufigkeit = absolute häufigkeit / anzahl der daten (Versuche)Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
"saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
"Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?
-
-
VB.NET-Quellcode
- Public Class Form1 'Ich hoffe mal ich hab das Problem richtig verstanden...
- 'Also insgesamt werden einfach nur zwei Labels und ein Button benötigt
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim ZufallsGenerator As New Random 'Eben der Zufallsgenerator
- Dim ErsterProzentsatz As Integer = 1 'Die drei Prozentsätze
- Dim ZweiterProzentsatz As Integer = 20
- Dim DritterProzentsatz As Integer = 40
- Dim Zufallszahl As Integer = ZufallsGenerator.Next(0, 100) 'Das generieren der Zufallszahl
- Label2.Text = Zufallszahl.ToString 'Nur zur Überprüfung der Zufallszahl
- 'Als Beispiel wird jetzt einfach immer ein Zahlenbereich abgefragt:
- If Zufallszahl = ErsterProzentsatz Then 'Ich hab es jetzt einfach mal in If Abfragen gepackt...
- Label1.Text = "Wow, nur 1% Wahrscheinlichkeit hierfür! Das Video ist eigentlich ganz gut:" _
- & vbCrLf & "http://www.youtube.com/watch?feature=player_embedded&v=rp8hvyjZWHs"
- End If
- If Zufallszahl > ErsterProzentsatz And Zufallszahl < ZweiterProzentsatz + ErsterProzentsatz Then
- Label1.Text = "Zwanzig Prozent Wahrscheinlichkeit hierfür"
- End If
- If Zufallszahl > ZweiterProzentsatz + ErsterProzentsatz And Zufallszahl < DritterProzentsatz + ZweiterProzentsatz + ErsterProzentsatz Then
- Label1.Text = "und 40 Prozent Wahrscheinlichkeit hierfür"
- End If
- 'Ich hab es jetzt noch nicht wirklich getestet aber sollte funktionieren...
- 'Solltest du wenig verschiedene Prozente haben, würde sich sogar das hingeschmierte hier eignen
- 'Falls du mehr brauchst, würde ich nochmal einen der besseren hier im Forum befragen, wie man vielleicht merkt, hab ich auch gerade erst letztens angefangen...
- End Sub
- End Class
-
Ich würde das so machen, ist warscheinlich aber nicht die beste und effizienste Lösung:
-Du machst eine Liste mit den möglichen Ausgaben: "Win1", "Win2", "Win3",...
-Danach machst du Random(0, Anzahl der möglichen Ausgaben), und greifst auf die Liste zu List(randomZahl)
-Danach noch ein Random mit dem Prozenwert, Random(0, 10) == 5 z.B 10%
Nur ein Ansatz -
Telcrome schrieb:
'Also insgesamt werden einfach nur zwei Labels und ein Button benötigt
Was hat das Design (Labels, Buttons etc) mit der LOGIK zu tun?
BTW: Und jetzt noch mal den Code für 60 verschiedene Ereignisse ... -
Was hat das Design (Labels, Buttons etc) mit der LOGIK zu tun?
Klar es ist eigentlich selbstverständlich, welche Steuerelemente ich benutzt habe, wenn man den Quelltext dann testen will, aber ist es so nicht einfacher? Vielleicht habe ich auch deinen Einwand nicht verstanden. Schließlich habe ich nur darauf verwiesen, was noch im Designer gemacht werden musste.
BTW: Und jetzt noch mal den Code für 60 verschiedene Ereignisse ...
Da hat Byte schon etwas zu geschrieben. Außerdem habe ich in meinem Beitrag geschrieben, dass ich jetzt eben nur Beispielhaft drei verschiedene Zahlenbereiche abfrage, mehr eben nicht... -
Telcrome schrieb:
dass ich jetzt eben nur Beispielhaft drei verschiedene Zahlenbereiche abfrage, mehr eben nicht...
Und weiter oben hatte ich bereits auf eine allgemeingültige Lösung hingewiesen ...
Man kanns sogar noch weiter trivialisieren:
VB.NET-Quellcode
- Dim verteilung() As Integer = {1, 20, 30, 100} ' relative Häufigkeit, summiert!
- Dim r As New Random
- Dim wert = r.Next(1, verteilung.Max + 1)
- Dim index = (From i In Enumerable.Range(0, verteilung.Count) Select i Where verteilung(i) >= wert Take 1).First
- Debug.Print("Zufall {0} => Index {1}", wert, index)
-
So richtig hab ichs jetzt nicht verstanden :DD
Ich bräuchte nen kurzen C&P wo auch schon das mit den labeln und buttons drinn ist =)
Ich habs jetzt mal so gelöst:
VB.NET-Quellcode
- Dim ZufallsGenerator As New Random
- Dim Zufallszahl As Integer = ZufallsGenerator.Next(0, 101)
- Label2.Text = Zufallszahl
- If Label2.Text = 1 Or Label2.Text = 2 Or Label2.Text = 3 Or Label2.Text = 4 Or Label2.Text = 5 Or Label2.Text = 6 Or Label2.Text = 7 Or Label2.Text = 8 Or Label2.Text = 9 Or Label2.Text = 10 Then
- MsgBox("Diese Nachricht kommt zu 10%!")
- Else
- MsgBox("Diese Nachricht kommt zu 90%!")
- End If
Jedoch habe ich das gefühl, das es nach irgendeinem system generiert... es kommt sehr oft die zahl 1 vor... sehr nahaneinandere zahlen werden nacheinander ausgegeben...
Ist das normal? -
Der Zufallsgenerator muss ja auch irgendwie gefüttert werden. Machst du das nicht, dann macht es das System für dich. Und dann wird der Startwert mit Hilfe der Zeit erzeugt.
Deshalb wird der Generator 1x am Start erzeugt.
VB.NET-Quellcode
- Dim zufallszahl As Integer
- Dim zufGenerator As New Random
- Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- zufallszahl = zufGenerator.Next(0, 10)
- label2.text = zufallszahl.ToString 'Zufallszahl ist INTEGER, Label.text ist STRING !!!
- Select Case zufallszahl
- Case 1 To 9
- MessageBox.Show("1 to 9")
- Case Else
- MessageBox.Show("sonst")
- End Select
- End Sub
PS: hast du nicht deine 10% und 90%-Aussage vertauscht?
PPS: warum weist du eine Integer-Variable einem Label zu und fragst anschließen das LABEL ab? (Warum fragst du nicht die Zufallszahl ab? Ist nicht egal) -
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Neues Problem
Ich brauche diesen generator 2x, jedoch hat der zweite immer die zahl vom ersten! hier der code!
VB.NET-Quellcode
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim ZufallsGenerator As New Random
- Dim Zufallszahl As Integer = ZufallsGenerator.Next(1, 101)
- Label3.Text = Zufallszahl
- If Zufallszahl = 1 Or Zufallszahl = 2 Or Zufallszahl = 3 Or Zufallszahl = 4 Or Zufallszahl = 5 Or Zufallszahl = 6 Or Zufallszahl = 7 Or Zufallszahl = 8 Or Zufallszahl = 9 Or Zufallszahl = 10 Then
- Label1.Text = "Forcepack!"
- Else
- Label1.Text = "Guthaben + 0"
- End If
- Dim ZufallsGenerator2 As New Random
- Dim Zufallszahl2 As Integer = ZufallsGenerator2.Next(1, 101)
- Label4.Text = Zufallszahl2
- If Zufallszahl2 = 1 Or Zufallszahl2 = 2 Or Zufallszahl2 = 3 Or Zufallszahl2 = 4 Or Zufallszahl2 = 5 Or Zufallszahl2 = 6 Or Zufallszahl2 = 7 Or Zufallszahl2 = 8 Or Zufallszahl2 = 9 Or Zufallszahl2 = 10 Then
- Label2.Text = "Forcepack!"
- Else
- Label2.Text = "Guthaben + 0"
- End If
- End Sub
-
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
Trotzdem werden die gleichen zahlen generiert...
VB.NET-Quellcode
- Private ZufallsGenerator As New Random
- Private ZufallsGenerator2 As New Random
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim Zufallszahl As Integer = ZufallsGenerator.Next(1, 101)
- Label3.Text = Zufallszahl
- If Zufallszahl = 1 Or Zufallszahl = 2 Or Zufallszahl = 3 Or Zufallszahl = 4 Or Zufallszahl = 5 Or Zufallszahl = 6 Or Zufallszahl = 7 Or Zufallszahl = 8 Or Zufallszahl = 9 Or Zufallszahl = 10 Then
- Label1.Text = "Forcepack!"
- Else
- Label1.Text = "Guthaben + 0"
- End If
- Dim Zufallszahl2 As Integer = ZufallsGenerator2.Next(1, 101)
- Label4.Text = Zufallszahl2
- If Zufallszahl2 = 1 Or Zufallszahl2 = 2 Or Zufallszahl2 = 3 Or Zufallszahl2 = 4 Or Zufallszahl2 = 5 Or Zufallszahl2 = 6 Or Zufallszahl2 = 7 Or Zufallszahl2 = 8 Or Zufallszahl2 = 9 Or Zufallszahl2 = 10 Then
- Label2.Text = "Forcepack!"
- Else
- Label2.Text = "Guthaben + 0"
- End If
- End Sub
Edit: Gelöst ;D habe den Generator nur 1x jetzt aufgerufen
-
Ähnliche Themen
-
6 Benutzer haben hier geschrieben
- Gast (15)
- RodFromGermany (3)
- Telcrome (2)
- rotherford (1)
- Myrax (1)
- Glossy Cherry (1)