Moinz!
Um einem Computerneuling zu demonstrieren, dass bei einem Computer Zufall!=Zufall ist (jedenfalls in "kurzen" Schleifen), habe ich folgendes Miniscript geschrieben.
Im ersten Teil werden einfach Zufallszahlen zwischen 1 und der Breite der GUI erzeugt und grafisch als Länge eines Balkens dargestellt. Ist der untere Rand der GUI erreicht, wird die häufigste Zufallszahl ausgegeben.
Beim zweiten Teil startet das Script in der Mitte der GUI und wendet sich, je nach dem Ergebnis der Random-Funktion zwischen 1 und 4 einer Himmelsrichtung zu und markiert das dortige Pixel mit einer Farbe. Wird der Rand der GUI erreicht, wird das Script beendet.
Die Frage lautet: Ab welcher Größe der quadratischen GUI läuft der Algorithmus unendlich lange?
Spoiler anzeigen
#include <gdiplus.au3>
_GDIPlus_Startup()
$width = 500
$height = 500
$hgui = GUICreate("Random Viewer", $width, $height)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hgui)
$hPen = _GDIPlus_PenCreate()
Dim $a[$width + 2]
$max = 0
While $a[$max] < $height
$random = Random(1, $width, 1)
_GDIPlus_GraphicsDrawLine($hGraphic, $random, $a[$random], $random, $a[$random] + 1, $hPen)
$a[$random] += 1
If $a[$random] > $max Then $max = $random
WEnd
MsgBox(0, "häufigste Zahl zwischen 1 und " & $width, $max)
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_GraphicsClear($hGraphic)
$x = Int($width / 2) ;startpunkt mitte
$y = Int($height / 2)
Do
$random = Random(1, 4, 1)
Switch $random
Case 1 ;rechts
$x += 1
$col = 0xFF0000FF
Case 2 ;links
$x -= 1
$col = 0xFF00FF00
Case 3 ;oben
$y -= 1
$col = 0xFFFF0000
Case 4 ;unten
$y += 1
$col = 0xFF000000
EndSwitch
$hPen = _GDIPlus_PenCreate($col)
_GDIPlus_GraphicsDrawLine($hGraphic, $x, $y, $x, $y + 1, $hPen)
Until $x < 0 Or $x > $width Or $y < 0 Or $y > $height ;ende, wenn rand erreicht
MsgBox(0, "", "Ende")
[/autoit] [autoit][/autoit] [autoit][/autoit]