608.416 aktive Mitglieder*
4.102 Besucher online*
Kostenfrei registrieren
Einloggen Registrieren

G-Code für Zufallszahlen :)

Beitrag 27.08.2025, 00:21 Uhr
deadlykitten
Member
*

Hallo smile.gif ich habe das nur gemacht, um mich selbst herauszufordern, nicht für eine echte Anwendung ... 2021

Um Zufälligkeit zu erzeugen, habe ich mit 3,14 (π) angefangen, die Zahl an der Dezimalstelle verschoben, wo sie über die System-Float-Präzision hinausgeht, aber nicht so weit, dass ein Fehler ausgelöst wird, und das dann mit variabler Dauer von Dateioperationen und Makroschleifen kombiniert.

Kurz gesagt, ich habe Nachkommastellen einer irrationalen Zahl gesucht, die jenseits der Controller-Präzision (als Variablentyp) liegen, und das mit G-Code-Prozessen kombiniert, die instabile Ausführungszeiten haben.

Wie auf dem Bild zu sehen, sind die Zahlen nicht identisch, aber es lässt sich eine Tendenz erkennen ... diese Tendenz kann weiter genutzt werden, als Faktor zur Erzeugung noch größerer Variation; sobald eine Tendenz bemerkt wird, kann sie z. B. verwendet werden, um einen Gauß (oder etwas anderes) auszulösen smile.gif

Vielen Dank an alle, das war's fürs Erste smile.gif

QUELLTEXT
G305

NOEX VBNCT = 1

$ V9 = 100 ( ordinul numerelor aleatoare : 10 - 10000, etc )

$ V1 = VPAI V7 = 01 V8 = 01 (*7)

$

$ ( * )

$

$ V05 = 0

$ V11 = 0 V12 = 0 V13 = 0 V14 = 0

$ V15 = 0 V16 = 0 V17 = 0

$ V18 = 0 V19 = 0

$ V20 = 0





CALL OFLASH LVA = 10

CALL OFLASH LVA = 20

CALL OFLASH LVA = 30

CALL OFLASH LVA = 40

NOEX V52 = 0 V54 = 0 V56 = 0 V58 = 0





FWRITC numbers.txt;(AC)C





NBEGIN NOEX

$ V2 = DROUND [ V1 ] V3 = FIX [ V2 ]

$ V4 = ABS [ V1 - V3 ] V5 = V5 + 1 (*6)





IF [ ABS [ V4 ] LE 0.0000001 ] NBREAK (*1b)





IF [ MOD [ V5 , V7 ] EQ 0 ] NTRUE





( nfalse ) NOEX V1 = V4 * V9





GOTO NDONE





NTRUE IF [ V4 GE 0.10 ] NJUMP1 (*1a)

NOEX V4 = V4 * 10

GOTO NTRUE

NJUMP1 NOEX V1 = V4 * V4 * V9





IF [ MOD [ V5 , V8 ] NE 0 ] NJUMP3

NOEX V6 = MOD [ VDIN [ 1000 ] , 10 ] (*2)

IF [ V6 GE 0.5 ] NJUMP2 (*3)

NOEX V6 = 1

NJUMP2 NOEX V1 = V1 * V6 * 11 / 100

NJUMP3 NOEX





NDONE NOEX





( IF [ V5 LT 10 ] NBEGIN ) (*4) (*5)





CALL OHS1

CALL OHS2

CALL OHS3

CALL OHS4





NOEX PUT ' ' PUT V1

$ PUT ' ' PUT V2 , 7 ( DROUND [ V1 ] )

$ PUT ' ' PUT V3 , 5 ( FIX [ V2 ] )

$ PUT ' ' PUT V4 ( ABS [ V1 - V3 ] )

$ PUT ' ' PUT V5 , 4 ( V5 = V5 + 1 )

$ PUT ' ' PUT V6 , 1 ( MOD [ VDIN [ 1000 ] , 10 ] )

$ PUT ' ' PUT V7 , 3 ( *.sdf )

$ PUT ' ' PUT V8 , 3 ( *.sdf )

$ PUT ' ' PUT V11 , 4

$ PUT ' ' PUT V12 , 4

$ PUT ' ' PUT V13 , 4

$ PUT ' ' PUT V14 , 4

$ PUT ' ' PUT V15 , 4

$ PUT ' ' PUT V16 , 4

$ PUT ' ' PUT V17 , 4

$ PUT ' ' PUT V18 , 4

$ PUT ' ' PUT V19 , 4

$ PUT ' ' PUT V20 , 4

WRITE C





IF [ V5 LT 1000 ] NBEGIN





NBREAK CLOSE C





FWRITC clase.txt;A

NOEX PUT ' ' PUT V7 , 3

$ PUT ' ' PUT V8 , 3

$ PUT ' ' PUT V11 , 4

$ PUT ' ' PUT V12 , 4

$ PUT ' ' PUT V13 , 4

$ PUT ' ' PUT V14 , 4

$ PUT ' ' PUT V15 , 4

$ PUT ' ' PUT V16 , 4

$ PUT ' ' PUT V17 , 4

$ PUT ' ' PUT V18 , 4

$ PUT ' ' PUT V19 , 4

$ PUT ' ' PUT V20 , 4

WRITE C





CLOSE C

FWRITC his.txt;A

NOEX PUT ' ' PUT V52 , 3

$ PUT ' ' PUT V54 , 3

$ PUT ' ' PUT V56 , 3

$ PUT ' ' PUT V58 , 3

WRITE C





M02





(





)





OFLASH





NOEX VC [ LVA + 01 ] = 0

$ VC [ LVA + 02 ] = 0

$ VC [ LVA + 03 ] = 0

$ VC [ LVA + 04 ] = 0

$ VC [ LVA + 05 ] = 0

$ VC [ LVA + 06 ] = 0

$ VC [ LVA + 07 ] = 0

$ VC [ LVA + 08 ] = 0

$ VC [ LVA + 09 ] = 0

$ VC [ LVA + 10 ] = 0





RTS





OHS1

NOEX V51 = VDIN [ 1000 ]

IF [ V3 LE V9/10*1 ] NC01

IF [ V3 LE V9/10*2 ] NC02

IF [ V3 LE V9/10*3 ] NC03

IF [ V3 LE V9/10*4 ] NC04

IF [ V3 LE V9/10*5 ] NC05

IF [ V3 LE V9/10*6 ] NC06

IF [ V3 LE V9/10*7 ] NC07

IF [ V3 LE V9/10*8 ] NC08

IF [ V3 LE V9/10*9 ] NC09

GOTO NC10

NC01 NOEX V11 = V11 + 1

GOTO NC99

NC02 NOEX V12 = V12 + 1

GOTO NC99

NC03 NOEX V13 = V13 + 1

GOTO NC99

NC04 NOEX V14 = V14 + 1

GOTO NC99

NC05 NOEX V15 = V15 + 1

GOTO NC99

NC06 NOEX V16 = V16 + 1

GOTO NC99

NC07 NOEX V17 = V17 + 1

GOTO NC99

NC08 NOEX V18 = V18 + 1

GOTO NC99

NC09 NOEX V19 = V19 + 1

GOTO NC99

NC10 NOEX V20 = V20 + 1

GOTO NC99

NC99 NOEX V52 = V52 + VDIN [ 1000 ] - V51

RTS





OHS2

NOEX V53 = VDIN [ 1000 ]

IF [ V3 GT V9/10*01 ] NC02

NOEX LVA = 01

GOTO NC99

NC02 IF [ V3 GT V9/10*02 ] NC03

NOEX LVA = 02

GOTO NC99

NC03 IF [ V3 GT V9/10*03 ] NC04

NOEX LVA = 03

GOTO NC99

NC04 IF [ V3 GT V9/10*04 ] NC05

NOEX LVA = 04

GOTO NC99

NC05 IF [ V3 GT V9/10*05 ] NC06

NOEX LVA = 05

GOTO NC99

NC06 IF [ V3 GT V9/10*06 ] NC07

NOEX LVA = 06

GOTO NC99

NC07 IF [ V3 GT V9/10*07 ] NC08

NOEX LVA = 07

GOTO NC99

NC08 IF [ V3 GT V9/10*08 ] NC09

NOEX LVA = 08

GOTO NC99

NC09 IF [ V3 GT V9/10*09 ] NC10

NOEX LVA = 09

GOTO NC99

NC10 NOEX LVA = 10

NC99 NOEX LVA = LVA + 10*2 VC [ LVA ] = VC [ LVA ] + 1 V54 = V54 + VDIN [ 1000 ] - V53

RTS





OHS3

NOEX LVA = 0 V55 = VDIN [ 1000 ]

NLOOP NOEX LVA = LVA + 01

IF [ V3 LE V9/10*LVA ] NDONE

GOTO NLOOP

NDONE NOEX LVA = LVA + 10*3 VC [ LVA ] = VC [ LVA ] + 1 V56 = V56 + VDIN [ 1000 ] - V55





RTS





OHS4

NOEX LVA = DROUND [ V3 / 10 ] LVA = FIX [ LVA ] V57 = VDIN [ 1000 ]

IF [ [ [ LVA - V3 / 10 EQ 0 ] AND [ LVA NE 0 ] ] EQ 1 ] NDONE

NOEX LVA = LVA + 1

NDONE NOEX LVA = LVA + 10*4 VC [ LVA ] = VC [ LVA ] + 1 V58 = V58 + VDIN [ 1000 ] - V57

RTS





( <=10

x x/10 []

0 0 0 1

7 0.7 0 1

9 0.9 0 1

10 1 1 1 OK

15 1.5 1 2

100 10 10 10 OK





IF '{}<>0 OR [] =0 ' THEN ++

IF NOT '{}<>0 OR [] =0 ' THEN JUMP

IF '{} =0 SI []<>0 ' THEN JUMP





)


Der Beitrag wurde von burs bearbeitet: 27.08.2025, 09:28 Uhr
Angehängte Datei(en)
Angehängte Datei  untitled.jpg ( 100.13KB ) Anzahl der Downloads: 11
 


--------------------
Ladyhawke - My Delirium, https://www.youtube.com/watch?v=X_bFO1SNRZg
TOP    



1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: