motorcross
Goto Top

Random Befehl

Hallo Administratoren,

ich möchte mit dem Random Befehl eine Ziffern Reihe mit neun Ziffern erstellen!
Ich habe es schon so versucht:
%random:~0,5%%random:~0,4%
Das funktioniert aber nicht richtig!
Kann mir jemand helfen?
Gruß Motorcross

Content-Key: 117699

Url: https://administrator.de/contentid/117699

Printed on: April 20, 2024 at 00:04 o'clock

Mitglied: 77559
77559 Jun 08, 2009 at 11:14:25 (UTC)
Goto Top
Hallo Motorcross,

wenn man sich hier nicht sowieso duzen würde, müssten wir das jetzt langsam tunface-wink

Der Windows XP Hilfe nach Ist:
[ms-its:C:\WINDOWS\Help\ntcmds.chm::/ntcmds_shelloverview.htm %RANDOM% System Gibt eine zufällige Dezimalzahl zwischen 0 und 32767 zurück. Generiert durch Cmd.exe.]

Das entspricht 15bit, für eine neun-stellige Dezimalzahl brauchst du ca 30bit. Wenn man von einer gleichermassen zufälligen Verteilung der einzeln bits aushgeht, könnte man zwei 15bit binär Zahlen hintereinander hängen.
Damit hast du aber immer noch keine Garantie das du keine führenden Nullen hast.
Dem kannst du nur mit einem Offset und ggfs einer Modulus Division begegnen.

@Echo off
Setlocal
set r1=%random%
set r2=%random%
set /A "r0=( r2 << 15) | r1"  
set r=000000000%r0%
set r=%r:~-9%
set r

Gruß
LotPings
Member: Destry
Destry Jun 08, 2009 at 11:17:41 (UTC)
Goto Top
Hallo Motorcross,

es ist etwas schwierig Dir zu helfen wenn Du nichts sagst was nicht richtig funktioniert.

Dein Befehl funktioniert bei mir. Aber vielleicht solltest Du es so probieren:

set /a ZUFALLSZAHL=%random:~0,5%%random:~0,4%
echo %ZUFALLSZAHL%

Meinst Du das?

Gruss,
Destry
Member: Motorcross
Motorcross Jun 08, 2009 at 12:19:17 (UTC)
Goto Top
Hallo Destry,
führe deinen Skript ein paar mal öfter aus, dann bemerkst du, dass nicht immer gleich viele Ziffern angezeigt werden!
Gruß Motorcross
Member: miniversum
miniversum Jun 08, 2009 at 20:25:55 (UTC)
Goto Top
Wenns nur die länge ist, kontrollier die doch und wiederhole das ggf.:
:loop
set zahl=%random%%random%
set zahl=%zahl:~0,9%
if "%zahl:~8,1%" equ "" goto:loop  
echo %zahl%