Wartezimmer

Beliebige Würfel.

Zufallszahlen werden mit zunehmender Komplexität sehr schnell konter intuitiv. Dabei ist ein gewisser Zufallsfaktor im Design von Spielen ja oft erwünscht.

Ich nutze da meisten sechsseitige Würfel (W6). Die kennen wohl die meisten am besten. Egal ob man einen, zwei oder drei wirft, man weiß grob was man bekommt. Und ich komme immer wieder erstaunlich weit mit nur diesen Würfeln.

image description - orange dot

In GDScript nimmt man einfach int randi_range(from: int, to: int) Das ist intuitiv einfach zu benutzen.

var roll_d6 = randi_range(1, 6)

Damit sind dann auch beliebige exotische Würfel wie ein fünfseitiger Würfer (W5) möglich. Vielleicht möchte man die Augenzahl jeder Seite des Würfels selbst bestimmen.

var faces = [-9, 1, 0, 0, 7]
var random_face = faces[randi_range(0 ,faces.size()-1)]

Viele hätten hier modulo geteilt, dass hätte zu einem Bias zugunsten der ersten Elemente im Array geführt.

image description - orange dot

Jetzt fehlen nur noch beliebige Wahrscheinlichkeiten für jede Seite des Würfels.

var weights := PackedFloat32Array([5.0, 10.0, 70.0, 10.0, 5.0])
var values := [-2, -1, 0, 1, 2]

var _rng: RandomNumberGenerator = RandomNumberGenerator.new()
var roll = values[_rng.rand_weighted(weights)]

Und hier hat man in wenigen Zeilen einen fünfseitigen Würfel bei dem die 0 in 70% der Würfe gewürfelt wird. Man kommt erstaunlich weit mit einem Würfel als Metapher für Zufallszahlen.

Mastodon
Thoughts? Leave a comment