Seite 1 von 1

Wie erzeugt man zufällige Kommazahlen?

Verfasst: 23.03.2010 00:53
von Travis
Habe mal wieder ein Brett vorm Kopf. Ich möchte Zufällige Kommazahlen z.B. von 0 bis 5 erzeugen. Ich bekomme aber nur Ganzzahlen heraus. Kann PureBasic das nicht von Haus aus, so dass man eine extra Funktion schreiben müsste, oder habe ich da was übersehen. An die Definition der Variable als Float habe ich gedacht.

Code: Alles auswählen

InitSprite()
InitKeyboard()

Global ResX = 1024
Global ResY = 768

OpenScreen(ResX,ResY,32,"",0)

Dim Value.f(9)

; >>>>> --------------------------- hier werden die Zahlen erzeugt ------------------------------- <<<<<<<
For i = 0 To 9
 Value(i) = Random(5)
Next
; >>>>> --------------------------- hier werden die Zahlen erzeugt ------------------------------- <<<<<<<

Repeat
ClearScreen(0)

 ExamineKeyboard()

 StartDrawing(ScreenOutput())
  For i = 0 To 9
   DrawText(x,i*15, "Testzahl " + StrF(value(i),3))
  Next
 StopDrawing()

FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Re: Wie erzeugt man zufällige Kommazahlen?

Verfasst: 23.03.2010 01:00
von a14xerus
lass dir halt nen random zwischen 0 und 5000 geben und teil durch 1000 und du hast ne zahl zwischen 0 und 5 mit 3 nachkommastellen ;)

oder halt random 0 -> 500000 und durch 100000 teilen => zahl mit 5 nachkommastellen etc ;)

Re: Wie erzeugt man zufällige Kommazahlen?

Verfasst: 23.03.2010 01:04
von STARGÅTE
Hier n Macro-Variante von mir:

Code: Alles auswählen

; Zufallszahl zwischen Start und Ende in einem Intervall 
Macro RandomArea(StartValue, EndValue, StepValue=1) 
  ( Random(Int(((EndValue)-(StartValue))/(StepValue)))*(StepValue)+(StartValue) ) 
EndMacro
Anwendung:

Code: Alles auswählen

RandomArea(0, 5, 0.01) ; erzeugt Zufallszahlen zwischen 0 und 5 in 0.01er schritten
Genauso kannst du/man auch ganz anderes erzeugeN

Code: Alles auswählen

RandomArea(-9, 7, 4) ; erzeugt Zufallszahlen zwischen -9 und 7 in 4er schritten (also etweder: -9,-5,-1,3,7)

Re: Wie erzeugt man zufällige Kommazahlen?

Verfasst: 23.03.2010 10:24
von Travis
Ah, danke für die Hilfe. Muss mann also doch selbst machen. Das Beispiel ist wirklich gut. So eine Funktion hätte man doch gleich in Pure Basic integrieren können - die braucht sowieso fast jeder mal.
Jetzt weiss ich aber auch über die Macros bescheid. Sowas gibt's in meiner Muttersprache (Blitz Basic) z.B. nicht.