Zufallszahlen gleich

engelmarkus

Erfahrenes Mitglied
Hallo zusammen!
Ich hab hier ein Problem, bei dem ich mal eure Hilfe bräuchte:
In einer WPF-Anwendung hab ich 5 Benutzersteuerelemente, die jeweils einen Würfel darstellen. Dazu mal der VB.Net-Code-Teil:

Code:
Partial Public Class Wuerfel
    Private _r As Random

    Private _augenzahl As Byte
    Public Property Augenzahl() As Byte
        Get
            Return _augenzahl
        End Get
        Set(ByVal value As Byte)
            _augenzahl = value
            AugenzahlGeändert()
        End Set
    End Property

    Sub New()
        InitializeComponent()

        System.Threading.Thread.Sleep(5)
        Randomize()
        _r = New Random()
    End Sub

    Public Sub Würfeln()
        Augenzahl = Int(_r.NextDouble() * 6 + 1)
    End Sub

    Public Sub AugenzahlGeändert()
...

Von diesem Würfel erstelle ich 5 Instanzen in meiner Anwendung und dazu noch einen Button, der mit allen 5 Würfeln einmal würfeln soll:
Code:
...
xmlns:clr="clr-namespace:Würfel"
...

<clr:Wuerfel x:Name="W1"/>
<clr:Wuerfel x:Name="W2"/>
<clr:Wuerfel x:Name="W3"/>
<clr:Wuerfel x:Name="W4"/>
<clr:Wuerfel x:Name="W5"/>

<Button Click="Button_Click" Content="Würfeln"/>

Im EventHandler vom Button rufe ich einfach nacheinander die "Würfeln"-Subs der einzelnen Würfel-Instanzen auf.

Jetzt zum eigentlich Problem: Da anscheinend alles zeitlich sehr nahe zusammenliegt, schaffe ich es viel zu oft, 5 gleiche Zahlen zu würfeln, oder zumindest mehrere. Was kann ich machen, damit ich mehr Zufälligkeit da reinkrieg?

EDIT: Ich hab gemerkt, dass es Würfel gibt, die immer denselben Wert anzeigen wie andere... Also es kann z.b. Paare geben, wenn der eine Würfel einen 2er anzeigt, dann zeigt der andere auch eine 2 an. Das kann doch nicht sein?

Markus
 
Zuletzt bearbeitet:
Hallo,

bei mehreren ziemlich gleichzeitigen Aufrufen der Funktion Next() (oder eben NextDouble() ) kommen immer gleiche Zahlen raus. (Edit: Die Zahlen werden anhand der aktuellen Uhrzeit generiert. Wie das genau gemacht wird weiß ich aber auch nicht ;) , aber mit nur einer Instanz der Klasse kommen nicht immer die gleichen Zahlen, sondern immer verschiedene)

Eine Möglichkeit wäre es, nur eine Instanz von Random erzeugen. Das kannst du z.B. machen, indem du die Variable _r als statisch deklarierst. Dann sollten eigentlich meistens alle Zahlen verschieden sein!

MfG
Fabsch
 
Zuletzt bearbeitet:
Zurück