Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zufallszahlen

Begonnen von Icemann1970, Juli 11, 2017, 10:01:54

⏪ vorheriges - nächstes ⏩

Icemann1970

Hallo. Knifflige Angelegenheit (für mich).
Ich möchte eine Zufallszahl erzeugen, dazu habe ich in einem Textfeld als Standardwert "=Int((9999*ZZG())+1)" eingegeben. Ich habe festgestellt, dass der Wert immer mit der gleichen Zahl anfängt ( erster Datensatz). Wenn die DB geschlossen und wieder geöffnet wird. Ich hatte mir überlegt, wenn ich zusätzlich aus dem Datum (jjmmtthhnnss) OHNE : nehme kommt ja eine Zahl zum Vorschein, die ich in der Formel einbeziehen / addieren  möchte, da durch die Zeiten eine neue Zahl erscheint werde ich immer eine neue Zufallszahl erhalten. Funktioniert nicht, da die Zahl ja als "verstecktes" Datum erscheint, die mit 1 ausgegeben wird. Ich hoffe das ich mein Problem richtig zum Ausdruck gebracht habe. Könnt Ihr mir da weiterhelfen ?
Mfg. Udo

MzKlMu

Hallo,
das Datum ist von Hause aus bereits ein Zahl (Double), das Format ist hier überflüssig und macht aus dem Datum einen Text.
Zeige Deine Versuche mit dem Datum.
Warum zeigst Du das übrigens nicht gleich, ohne Nachfrage?
Gruß Klaus

el_gomero

Hallo,

schau mal in die faq  http://www.donkarl.com?FAQ3.17  das sollte dein Problem lösen.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Beaker s.a.

Vielleicht hilft auch ein kurzer Blick in OH
ZitatDie 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.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Icemann1970

Hallo zusammen.
Ich habe die frage heute Morgen im Stau schnell geschrieben. Nun kommt mein Versuch mit dem Datum
=Int((9999*ZZG([DatAlsZahl]))+1)
Im Textfeld DatAlsZahl habe ich Standardwert =Jetzt() geschrieben und das Format auf jjmmtthhnnss gesetzt.
Die Zahl fängt immer mit dem gleichen Wert an. Was habe ich da falsch gedacht ? oder besser gefragt .... was habe ich mir dabei gedacht  ;D
Mfg. Udo

MzKlMu

Hallo,
Jetzt ist wie gesagt von Hause aus bereits eine Zahl. Und Format macht Text aus der Zahl.
Versuche es mal so:
=Int((9999*ZZG(Jetzt()))+1)

Beachte auch die anderen Hinweise im Thema.
Gruß Klaus

Lachtaube

Das ist so. Rnd erzeugt Pseudo-Zufallszahlen, deren Reihenfolge sich bei gleichem Initialwert wiederholt.
Grüße von der (⌒▽⌒)

Icemann1970

@ Lachtaube. Das ist der Grund weshalb bei jedem neuen Datensatz immer die gleich Zahl kommt, deshalb hatte ich mir gedacht wenn ich die Formel mit einem sich immer ändernen Wert aufbaue (Datum, als zahl.... die immer als Zahl erstellt wird  ;D) kann ich das umgehen.
@ Klaus, wenn ich =Int((9999*ZZG(Jetzt()))+1) eingebe habe ich keine Änderung. Fängt immer mit 7055 an. Wie gesagt wenn ich die DB schließe und wieder öffne.
Mfg. Udo

Icemann1970

Kann mir da jemand weiterhelfen ?
Mfg. Udo

Beaker s.a.

Hallo Udo,
Befülle das Textfeld mit VBA.

Randomize
Me.Textfeld = Int(9999*Rnd()+1)

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Icemann1970

Das ist es !!! Super.
Vielen Dank ekkehard, Klaus, Lachtaube und Jürgen.
Ich bin soooo froh dass es euch und diese Seite gibt. Access macht immer mehr Spaß, nur meine Freundin findet das nicht so  ;D
Mfg. Udo