[Tiptoi] Instruktions Code "FF00" erzeugt Zufallszahlen.

Ulrich Sibiller ulrich.sibiller at gmail.com
So Jan 10 08:33:52 CET 2016


Klasse! Das ist IMHO ein sehr wichtiger Baustein. Zufallszahlen waren bisher nur sehr aufwendig zu erzeugen.

Uli

Vom Smartphone gesendet.

----- Ursprüngliche Nachricht -----
Von: "Jürg Wullschleger" <wullschleger at gmail.com>
Gesendet: ‎10.‎01.‎2016 01:24
An: "tiptoi at lists.nomeata.de" <tiptoi at lists.nomeata.de>
Betreff: [Tiptoi] Instruktions Code "FF00" erzeugt Zufallszahlen.

Hallo zusammen,

Ich habe seit 2 Wochen ein tiptoi stift, und habe nun begonnen ein
bisschen mit dem tttool herum zu spielen.

Ich hab auch was neues herausgefunden: die Instruktion

?($register,<value>) (00 FF)

generiert eine Zufallszahl zwischen 0 und <value> (inklusive 0 und
<value>) und speichert es in $register.

Diese Interpretation macht auch einigermassen Sinn in "Puzzle
Kinderarzt", wo diese Instruktion gebraucht wird: (aus dem
mailing-listen archiv, 14 Jan 2015)

  12845:
  - $0==0? $6==0? ?($6,1) (00 FF) $6+=1 J(12845)
  - $0==0? $6==1? ?($6,1) (00 FF) $6+=1 ?($0,2) (E0 FF)
  - $0==0? $6==2? ?($6,1) (00 FF) $6+=1 P(99)
  - $0==1?
  12922:
  - $0==0? $10==0? ?($10,1) (00 FF) $10+=1 J(12922)
  - $0==0? $10==1? ?($10,1) (00 FF) $10+=1 ?($0,2) (E0 FF)
  - $0==0? $10==2? ?($10,1) (00 FF) $10+=1 ?($0,65535) (E1 FF)

Die Abfolge "?($6,1) (00 FF) $6+=1" generiert eine Zufallszahl
zwischen 1 und 2, welche dann benutzt wird, um eine von zwei
instruktionen auszufuehren.

Hier ist ein test fuer die Instruktion:

product-id: 42
media-path: Audio/digits/%s
welcome: blob
scripts:
  10208:
    - ?($register,9) (00 FF) P(blob)
  10239:
    - $register==0? P(blob) P(english_0)
    - $register==1? P(blob) P(english_1)
    - $register==2? P(blob) P(english_2)
    - $register==3? P(blob) P(english_3)
    - $register==4? P(blob) P(english_4)
    - $register==5? P(blob) P(english_5)
    - $register==6? P(blob) P(english_6)
    - $register==7? P(blob) P(english_7)
    - $register==8? P(blob) P(english_8)
    - $register==9? P(blob) P(english_9)
    - $register>10? P(blob) P(blob)

Die generierten Zufallszahlen sind:
1 9 7 7 7 7 2 7 7 2 7 7 2 7 6 7 1 7 2 7 7 6 6 2 7 7 2
3 7 7 2 3 2 2 2 7 7 7 2 7 7 1 7 2 7 2 6 7 2 7 2 6 6 7
3 1 6 6 2 6 7 2 7 7 7 7 7 7 2 2 7 7 2 7 2 2 7 2 7 2 2
7 0 1 7 1 7 7 2 1 7 9 7 7 7 2 7 7 7 7 1 7 7 2 7 1 7 7

Wie man sieht ist die Zufaelligkeit nicht wirklich uniform: viel zu
viele 7, gar keine 4, 5 oder 8.

Wenn man etwas uniformeres braucht, muss man also wohl:

  10208:
    - ?($register,14999) (00 FF) $register%=10 P(blob)

oder, falls das auch nicht wirklich uniform ist, gar:

  10208:
    - $count==0? P(blob) $register:=0 $count+=1 J(10208)
    - $count<50? ?($rand,6) (00 FF) $register+=$rand $count+=1 J(10208)
    - $count>=50? $register%=10 $count:=0 P(blob)

ausfuehlren. leider ist dies 2. Variante ziemlich langsam. Hier muss
man wohl nicht ein bisschen ausprobieren, was am besten ist.

Fuer einigermassen uniforme Zufallszahlen (z.b. fuer ein Wuerfelspiel)
ist es wohl
am besten, diese Funktion nur zu Beginn des Programms aufzurufen, um einen
Seed mit genuegend Entropie zu generieren. Und benutzt dann einen einfachen
Pseudozufallsgenerator.

Viele Gruesse

Juerg

-- 
tiptoi mailing list
tiptoi at lists.nomeata.de
https://lists.nomeata.de/mailman/listinfo/tiptoi
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://lists.nomeata.de/pipermail/tiptoi/attachments/20160110/67057763/attachment.htm>


Mehr Informationen über die Mailingliste tiptoi