Klasse/Function: RND

    • VB.NET

    Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von serials.

      Klasse/Function: RND

      hab ma ne einfache function für zufallszahlen gemacht:

      VB.NET-Quellcode

      1. Public Class GetRND
      2. Shared Function GetRND(ByVal min As Integer, ByVal max As Integer) As Integer
      3. Randomize()
      4. GetRND = Int((max - min + 1) * Rnd() + min)
      5. End Function
      6. End Class
      | Keine Fragen per PN oder Skype.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „serials“ ()

      hallo,

      ich muss schon sagen - es ist äusserst schade, dass microsoft das alte vb zeugs mit in die
      vb.net versionen übernommen hat.

      an dem obigen code ist nichts, was auch nur im entferntesten etwas mit vb.net zu tun hat.
      das ist code, der aus vb6 zeiten 1:1 übernommen wurde.

      code-schnippsel, werden von anderen gelesen und auch verwendet.
      deshalb sollte man vorsichtig sein, mit dem was man so öffentlich ausstellt.

      verwende doch bitte die entsprechenden klassen aus dem framework, wenn du schon meinst
      etwas unter dem deckmantel von vb2008(?) verbreiten zu müssen.

      nicht mal das ist richtig, das framework bietet unter vb2005 die gleiche klasse (zum zufallszahlen erzeugen an) wie
      unter vb2008. ich möchte sogar wetten, dass dies auch schon in vb2002 und 2003 der fall war.

      ich geh jetzt rasenmähen

      mikeb69
      hallo serials,

      achja: welche klassen meist du, ich kenne nur die klasse random


      warum verwendest du diese in deinem beispiel dann nicht ?

      nachtrag zum beitrag von blaze,

      das was dort als basis beschrieben ist ist ein seed (deutsch: Saat) wert.
      durch angabe eines solchen, wird eine quasi zufallszahl erzeugt.

      dafür verwendet man eine relativ zufällige zahl
      z.b.

      VB.NET-Quellcode

      1. Dim r As New Random(My.Computer.Clock.TickCount)


      Microsoft schrieb:

      Die Erzeugung der Zufallszahlen startet von einem Startwert. Wenn derselbe Startwert wiederholt verwendet wird, führt dies dazu, dass dieselbe Zahlenfolge erzeugt wird. Eine Möglichkeit, die Erzeugung unterschiedlicher Zahlenfolgen zu gewährleisten, besteht darin, den Startwert zeitabhängig zu machen.


      gruss

      mikeb69
      Hi
      Bei so einer Random besteht allerdings das Problem dass man mehrmals den gleichen Wert bekommt, wenn man einen nicht langsamen :D PC hat und Random in einer Schleife abruft.

      Daher sollte man eine klassenweite Random rnd einbauen und die dann immer mit rnd.Next abrufen ;). Der Seed kann weggelassen werden.

      Gruß
      ~blaze~
      Man kann nicht pauschal sagen, dass der Seed weggelassen werden kann. .Net verwendet jedoch GetTickCount (o.Ä.) als Seed, wenn der Constructor ohne Parameter aufgerufen wird (... as New Random()).

      Erfahrungsgemäß sollte man übrigens (je nach Möglichkeit) für Random-Seeds möglichst große Auflösungen verwenden. GetTickCount ist in Millisekunden. Micro- oder zig Nanosekunden führen meist zu deutlich besseren Ergebnissen, wenn mehrere Programme gleichzeitig mit Random arbeiten.

      Noch was: die Randomklasse gibt es seit .net 1.0 und .net compact 1.0.