PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Randombefehl in Basic



sulu
10.10.2005, 11:19
Hi Leute,
gibt es in Basic oder Bascom einen Befehl der zufällige Zahlen und Ziffernfolgen ausgibt.
Kann man dann auch eventuell bestimmen wieviele stellen diese zufälligen abfolgen haben?

PicNick
10.10.2005, 11:26
Bei Basic heißt das RND(limit) und bei Bascom ergibt es 16 Bit
limit kannst du in diesem Rahmen angeben (>0, logo)

sulu
10.10.2005, 14:10
Hab mich für Basic entschieden. Aber könntest du das nochmal genauer beschreiben?

Danke

PicNick
10.10.2005, 14:30
Example
Dim I As Integer
Do
I = Rnd(100) 'eine gestreute Zahlenfolge vom 0-99
Print I
Waitms 100
Loop
End

Vorsicht: Nach jedem "Reset" kommt die gleiche Folge. Da kann man sich aber helfen.

sulu
10.10.2005, 14:53
Ja das klappt schonmal.
Kann man jetzt unter die Zahle noch zufällige Buchstaben mischen?

PicNick
10.10.2005, 15:04
Das ist immer eine Zahl, du kannst aber (z.B) das dann auf druckbare Zeichen umlegen:
Dim I As Integer
Dim Z As byte
Do
I = Rnd(96) 'eine gestreute Zahlenfolge vom 0-95
Z = I + 32
Print chr(Z)
Waitms 100
Loop
End

sulu
10.10.2005, 15:19
Ja so wollt ich das.
Achso: Kann man auch die einzelnen Ziffern der Zufallszahlen "auslesen"?
Praktisch so:
Wenn die erste Ziffer 1 ist dann mach folgendes..

sulu
10.10.2005, 15:56
Ach ich vergaß:
hab jetzt ein Programm das di Zahlen 0-999 HOchzählt. Das mit dem auslesen ist darauf bezogen.

PicNick
10.10.2005, 16:27
Ganz hab ich es jetzt nicht, aber das Ergebnis von RND(x) ist eine ganz normale 16-Bit Zahl. Die kannst du vergleichen, multiplizieren und verwursten, wie du willst.

sulu
10.10.2005, 16:33
Ja aber die Zahl besteht ja aus 1er oder mehreren Ziffern.Es geht darum das er die einzelnen Ziffern erkennt

PicNick
10.10.2005, 16:45
ah so. du kannst die Zahl in eine String umwandeln

dim zahl as string * 5
dim ziffer as string * 1
i = rdn(xx) ' die Zahl z.B. 324
zahl = str (i) ' als string = "324"
ziffer = left(zahl, 1) ' das erste zeichen von string = "3"
if ziffer = "1" then .... tralala

sulu
10.10.2005, 18:53
Ach ja.Darauf wollt ich hinaus . Hatte mich vielleicht etwas kompliziert ausgedrückt.

Danke PicNick

Gast1
11.10.2005, 09:04
Hi,
wie heißt der Befehl, der die 2., 3.,4. oder 5. Stelle abfragt?

PicNick
11.10.2005, 11:02
Für Mittendrin:
midstring = MID(string ,start , länge )
und dann gibt's noch die Zeichen von rechts weg gerechet
rightstring = RIGHT(string ,anzahl )
Bei diesen beiden mußt du ein bißchen aufpassen, ob der Input-String überhaupt genug Stellen hat.
dafür wiederum gibt's:
länge = LEN( string )

sulu
12.10.2005, 10:36
So,
hab jetzt mal ein Zählprogrammgeschrieben:
Es zählt einfach hoch und gibt bevor es die Zahl ausgibt an, wie Stellen der folgenden Zahl aussehen

Declare Sub Ende()
$regfile = "m16def.dat"
Dim I As Integer
Dim E As Integer
Dim B As Integer
Dim A As Integer

A = 0
Do

B = A + 1
E = B
A = B
I = B
If I > 99999 Then Call Ende
Dim Zahl As String * 5
Dim Ziffer As String * 1

Zahl = Str(i)

Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "1" Then Print "1.=1"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "2" Then Print "1.=2"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "3" Then Print "1.=3"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "4" Then Print "1.=4"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "5" Then Print "1.=5"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "6" Then Print "1.=6"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "7" Then Print "1.=7"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "8" Then Print "1.=8"
Ziffer = Mid(zahl , 1 , 1)
If Ziffer = "9" Then Print "1.=9"

Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "0" Then Print "2.=0"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "1" Then Print "2.=1"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "2" Then Print "2.=2"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "3" Then Print "2.=3"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "4" Then Print "2.=4"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "5" Then Print "2.=5"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "6" Then Print "2.=6"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "7" Then Print "2.=7"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "8" Then Print "2.=8"
Ziffer = Mid(zahl , 2 , 1)
If Ziffer = "9" Then Print "2.=9"

Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "0" Then Print "3.=0"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "1" Then Print "3.=1"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "2" Then Print "3.=2"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "3" Then Print "3.=3"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "4" Then Print "3.=4"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "5" Then Print "3.=5"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "6" Then Print "3.=6"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "7" Then Print "3.=7"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "8" Then Print "3.=8"
Ziffer = Mid(zahl , 3 , 1)
If Ziffer = "9" Then Print "3.=9"

Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "0" Then Print "4.=0"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "1" Then Print "4.=1"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "2" Then Print "4.=2"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "3" Then Print "4.=3"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "4" Then Print "4.=4"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "5" Then Print "4.=5"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "6" Then Print "4.=6"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "7" Then Print "4.=7"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "8" Then Print "4.=8"
Ziffer = Mid(zahl , 4 , 1)
If Ziffer = "9" Then Print "4.=9"

Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "0" Then Print "5.=0"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "1" Then Print "5.=1"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "2" Then Print "5.=2"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "3" Then Print "5.=3"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "4" Then Print "5.=4"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "5" Then Print "5.=5"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "6" Then Print "5.=6"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "7" Then Print "5.=7"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "8" Then Print "5.=8"
Ziffer = Mid(zahl , 5 , 1)
If Ziffer = "9" Then Print "5.=9"

If Ziffer = "0" Then Print "6.=0"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "1" Then Print "6.=1"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "2" Then Print "6.=2"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "3" Then Print "6.=3"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "4" Then Print "6.=4"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "5" Then Print "6.=5"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "6" Then Print "6.=6"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "7" Then Print "6.=7"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "8" Then Print "6.=8"
Ziffer = Mid(zahl , 6 , 1)
If Ziffer = "9" Then Print "6.=9"
Ziffer = Mid(zahl , 6 , 1)


Print B



Loop

Sub Ende
Print "99999"
End
End Sub


Aber irgendwie kann ich für A oben nicht mehr als 32767 einsetzen.

Irgendwann fängt er an rückwärts wieder runter zu zählen.

Versteht ihr das?

PicNick
12.10.2005, 10:46
Na ja, ein Integer hat 16 Bit, geht also von 0 - 32767.
Das nächste wäre LONG mit 32 Bit, das geht dann bis 4294967295

sulu
12.10.2005, 10:50
Na, manchmal ist man auch blöd ](*,) ](*,)
Die 4294967295 reichen erstmal :)

Nur so zur Bildung : Gibt's auch was mit 64bit?

PicNick
12.10.2005, 10:57
Hiesse "Double" , das reicht auch fürs Bundesdefizit.
Beim BasCom muß man dann aber irgendwie mit den Libraries fummeln, da bin ich im moment überfragt

gast1
13.10.2005, 15:43
Ich hab auch mal so ein Zählprogramm geschrieben.
Weiß jemand wie man ihm sagt, dass er nicht bei 1anfangen soll zu zählen, sondern bei 000001 z.b.?

gast1
14.10.2005, 11:35
Hab mal versucht mit 0,000001 anfagen zu zählen.
Klappt aber auch nicht. Weiß wer nooch was anderes?

Marco78
14.10.2005, 14:10
0000001 ist mathematisch gesehen auch nur 1!
Was sollen die Nullen davor?
Wenn, kannst du alles in einen String umwandeln und den Befehl Format benutzen.