Seite 1 von 2

Zufallszahlen kleiner als 0

Verfasst: 08.09.2005 23:43
von SoS
Ich weiss nicht ob es das schon gab aber ich habe dazu nichts gefunden und brauchte das gerade dringend.

Code: Alles auswählen

Procedure Rnd(Min.l, Max.l) 
  Repeat
    result.l=(Random(Max-Min)+Min)-(Random(Max-Min)+Min) 
  Until result <= Max And result >= Min
  ProcedureReturn result 
EndProcedure

For X= 1 To 20
  Debug  Rnd ( -60,60 )
Next

Re: Zufallszahlen kleiner als 0

Verfasst: 09.09.2005 01:57
von Deeem2031
Man könnt ja auch einfach Random(120)-60 nehmen ...

Verfasst: 09.09.2005 10:40
von Agent
Hm...

Man könnte es auch so machen:
Das wäre dann noch besser aus meiner Sicht:

Code: Alles auswählen

zufallsbereich=1000

Select Random(1)
  Case 1
    zufallszahl=Random(zufallsbereich)*-1
  Case 0
    zufallszahl=Random(zufallsbereich)
EndSelect
Debug zufallszahl

Verfasst: 09.09.2005 11:41
von code2nil
Allgemein liefert Random(max-min)+min eine ZZ im Intervall [min; max], wobei min, max mit min<=max beliebige ganze Zahlen sein dürfen.

Re: Zufallszahlen kleiner als 0

Verfasst: 09.09.2005 11:46
von SoS
Deeem2031 hat geschrieben:Man könnt ja auch einfach Random(120)-60 nehmen ...
nur

Code: Alles auswählen

Debug  Rnd ( -60,60 )
ist nur ein Beispiel und ich kann da eingeben was ich will :D

z.b.

Code: Alles auswählen

Procedure Rnd(Min.l, Max.l) 
  Repeat 
    result.l=(Random(Max-Min)+Min)-(Random(Max-Min)+Min) 
  Until result <= Max And result >= Min 
  ProcedureReturn result 
EndProcedure 

For X= 1 To 20 
  Debug  Rnd ( -14311,-123 )
  Debug  Rnd ( 60,6000 )
  Debug  Rnd ( -60,60 )
  Debug  Rnd ( -100,0 )
  Debug  Rnd ( -14311,14311 )
  Debug ""
Next

Verfasst: 09.09.2005 11:54
von code2nil
Wie gesagt

Code: Alles auswählen

Procedure Rnd(Min.l, Max.l)
  result.l=Random(Max-Min)+Min)
  ProcedureReturn result
EndProcedure

For X= 1 To 20
  Debug  Rnd ( -14311,-123 )
  Debug  Rnd ( 60,6000 )
  Debug  Rnd ( -60,60 )
  Debug  Rnd ( -100,0 )
  Debug  Rnd ( -14311,14311 )
  Debug ""
Next
sollte klappen...

Verfasst: 09.09.2005 12:11
von SoS
hmm,stimmt. (Bis auf das ")" hinter Min :) )

Ich habe das scheinbar zu verkompliziert . :mrgreen:

Verfasst: 09.09.2005 12:23
von code2nil
hmm,stimmt. (Bis auf das ")" hinter Min Smile )
Äh, genau - hatte das nur so reingetipselt ;-)

Verfasst: 09.09.2005 13:12
von AndyX

Code: Alles auswählen

bla.l = Random(2000)
!NEG dword[v_bla]
Wenn ich da jetzt nicht was falsch verstanden habe, sollte das helfen...

Verfasst: 09.09.2005 14:03
von remi_meier
:D Da will jemand seine ASM Kentnisse zeigen..

ein einfaches a = -Random(2000) würds auch tun

und

du hast es falsch verstanden^^ mein Code oben ist auch falsch