<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>Hi Marcel,</p>
<p>ich versuch mal eine kurze Erklärung was hier passiert:<br>
</p>
<p>T($r, 65535) liest den Timer aus und "begrenzt" ihn über die
modulo-funktion auf 0-65535.</p>
<p>Das register $rnd enthält den aktuellen Zufallszahlen-Seed-Wert;
initial 0, nach $rnd+=$r steht darin die maskierte Zeit von eben.
Beim nächsten Durchlauf (also nächster Zufallszahl) wird wieder
die aktuelle Zeit addiert um eine zufälligere Streuung zu
erzeugen. <br>
</p>
<p>Danach wird der Wert mit 25173 multipliziert - der Wert ist
relativ willkürlich aber in der Literatur und typischen
Implementierungen zu finden; ebenso der Werte 13849 der aufaddiert
wird. Das ganze dient nur dazu bei jeder Zufallszahl einen neuen
seed-Wert zu bekommen aus dem die eigentliche Zufallszahl
berechnet wird.</p>
<p>Man kann für die beiden Konstanten auch andere Werte verwenden,
aber bei ungeeigneten Konstanten ist der Zufall halt schlechter
oder gar nicht mehr vorhanden (z.B. Multipliator 0 oder 1 oder
beim offset kleine Zahlen. Der Multiplikator sollte z.B. auch
immer ungerade sein, sonst kommen (wegen des ungeraden Offsets)
nur ungerade Würfelergebnisse raus.<br>
</p>
<br>
<p>Deine Version würde zwar auch Zufallszahlen erzeugen, aber mit
einer erheblich schlechteren Streuung weil der seed-Wert nur noch
von der aktuellen Zeit abhängt - Extrembeispiel: dreimal in der
gleichen Sekunde würde dreimal der gleiche "Zufallswert"erzeugt.
Deshalb auch das dritte register $r - um es auf $rnd
aufzuaddieren.</p>
<p>Die Befehle $wuerfel%=6 und $wuerfel+=1 sind nur dazu da um die
Zufallszahl zuerst auf 0-5 zu begrenzen und dann um 1 zu erhöhen
damit Würfelaugen herauskommen.</p>
<p><br>
</p>
<p>Oder als Formel geschrieben:<br>
</p>
<p> $rnd = ($rnd + AktuelleZeitInSekunden modulo 65535) * <span
style="font-family:"Courier
New";mso-fareast-language:DE">25173 + </span><span
style="font-family:"Courier
New";mso-fareast-language:DE">13849 </span></p>
<p> $wuerfel= ($rnd modulo 6) + 1</p>
<p><br>
</p>
<p><br>
</p>
<p>
</p>
<p>Schöne Grüße</p>
<p> christoph</p>
<p><br>
</p>
<div class="moz-cite-prefix">Am 17.09.2018 um 07:59 schrieb Marcel
Eilers:<br>
</div>
<blockquote type="cite"
cite="mid:001a01d44e4b$8cd26760$a6773620$@t-online.de">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<meta name="Generator" content="Microsoft Word 14 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.E-MailFormatvorlage17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">Guten Morgen,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">auf die Notwendigkeit meine Programmierung
auf maximal 8 Befehle in einer Reihe zu kürzen, habe ich mir
den „Pseudo-Zufallsgenerator“ nochmal angesehen. Irgendwie bin
ich da nicht ganz dahinter gestiegen. Aber interessieren würde
es mich trotzdem.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Also der Standard Generator lautet:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">- T($r,65535) $rnd+=$r
$rnd*=25173 $rnd+=13849 $wuerfel:=$rnd $wuerfel%=6
$wuerfel+=1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE"><o:p> </o:p></span></p>
<p class="MsoNormal">Damit habe ich schon 7 Befehle verbraucht.
Jetzt noch ein J und ein P Befehl und der Assembler macht
Probleme.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Warum werden für diese Funktion 3 Register
verwendet?? Man könnte dies auch so schreiben:<o:p></o:p></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">- T($wuerfel,65535)
$wuerfel*=25173 $wuerfel+=13849 $wuerfel%=6 $wuerfel+=1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE"><o:p> </o:p></span></p>
<p class="MsoNormal">Dann hätte ich das um 2 Befehle reduziert…<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Welche Bedeutung haben die Zahlen 25173 und
13849???? Ist das willkürlich?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Wäre schön, wenn mir jemand dieser Funktion
einfach nur mal erläutern könnte. Dies einfach nur
interessehalber…<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Vielen Dank für Eure Bemühungen.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Schöne Grüße<o:p></o:p></p>
<p class="MsoNormal">Marcel<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
</blockquote>
<br>
</body>
</html>