Seite 1 von 1

Zufallszahl zwischen a und b

Verfasst: 04.12.2008 14:00
von Dare Devil
Hallo.
Gibt es einen Trick eine Zufallszahl zwischen zwei bestimmten Zahlen zu ermitteln. Random() ermittelt ja nur eine Zufallszahl zwischen 0 und einer Zahl, ich moechte diese Anfangsposition aber selbst bestimmen koennen - z.B. eine Zufallszahl zwischen -100 und 100. Gibts da irgendeine Loesung?

Verfasst: 04.12.2008 14:02
von Fluid Byte

Code: Alles auswählen

Debug -100 + Random(200)

Verfasst: 04.12.2008 14:02
von NicTheQuick
Entweder im Forum suchen oder schnell selbst überlegen.

Ein Wert zwischen -100 und 100 sind ingesamt 201 Möglichkeiten und es beginnt mit -100.

Also berechnet man die entsprechende Zufallszahl mit Random(200) - 100.

Wenn deine Grenzen allgemein min und max sind, geht es mit Random(max - min) + min.

Verfasst: 04.12.2008 14:16
von Dare Devil
Funktioniert einwandfrei - dankeschoen :)

Verfasst: 04.12.2008 19:32
von STARGÅTE
falls du später noch "andere" Zufallszahlen brauchst, kann ich dir dieses Macro geben:

Code: Alles auswählen

Macro RandomArea(StartValue, EndValue, StepValue=1) 
 ( Random(Int(((EndValue)-(StartValue))/(StepValue)))*(StepValue)+(StartValue) ) 
EndMacro
damit könntest du dann auch deinen Fall machen :
RandomArea(-100, 100)

oder zum Beispiel nur gerade Zahlen von 10 bis 20:
RandomArea(10, 20, 2)

Verfasst: 04.12.2008 20:13
von Dare Devil
STARGÅTE hat geschrieben:falls du später noch "andere" Zufallszahlen brauchst, kann ich dir dieses Macro geben:

Code: Alles auswählen

Macro RandomArea(StartValue, EndValue, StepValue=1) 
 ( Random(Int(((EndValue)-(StartValue))/(StepValue)))*(StepValue)+(StartValue) ) 
EndMacro
damit könntest du dann auch deinen Fall machen :
RandomArea(-100, 100)

oder zum Beispiel nur gerade Zahlen von 10 bis 20:
RandomArea(10, 20, 2)
Das koennte mir sehr nuetzlich werden, danke fuer deine Muehe :allright:

Verfasst: 04.12.2008 22:30
von DrNo
Hab da auch noch eine Frage dazu, also zu Random() :roll:

Wie kann ich in Random festlegen was für zeichen und wie viele benutzt werden?
Also nur Zahlen, oder auch Buchstaben oder Sonderzeichen und so.

Es gibt ja Random(#FFFF) aber das versteh ich nicht...

Verfasst: 04.12.2008 22:39
von Kaeru Gaman
Random($FFFF) ist einfach nur Random(65535), nur in Hex-schreibweise.

wenn du bestimmte zeichen erzeugen willst, musst du deren ASCII-codes erzeugen.

z.b. erzeugt Chr(Random(9)+48) die ziffern 0-9
für zahlen und großbuchstaben musst du etwas tricksen, um die zwei bereiche abzudecken:

Code: Alles auswählen

a = Random( 35 )
If a > 9
  a + 55
Else
  a + 48
EndIf
wenn du eine unregelmäßige reihe von buchstaben erzeugen willst, benutzt du am besten ein Array:

Code: Alles auswählen

Dim ascii$(19)

For n=0 To 19
  Read ascii$( n )
Next

DataSection
Data.s "0", "1", "3", "5", "6", "8", "A", "C", "D", "F", "H", "L", "M", "N", "P", "Q", "R", "S", "T", "U"
EndDataSection

For n=0 To 50
Debug ascii$( Random( 19 ) )
Next

Verfasst: 05.12.2008 00:05
von HeX0R
Kaeru Gaman hat geschrieben:
wenn du eine unregelmäßige reihe von buchstaben erzeugen willst, benutzt du am besten ein Array:

Code: Alles auswählen

Dim ascii$(19)

For n=0 To 19
  Read ascii$( n )
Next

DataSection
Data.s "0", "1", "3", "5", "6", "8", "A", "C", "D", "F", "H", "L", "M", "N", "P", "Q", "R", "S", "T", "U"
EndDataSection

For n=0 To 50
Debug ascii$( Random( 19 ) )
Next
Man sollte nicht unerwähnt lassen, dass dieser Code nicht mehr so unter PB4.3 funktioniert.
(Da heisst es dann Read.s ascii$( n ))