Seite 2 von 4

Verfasst: 30.09.2006 20:52
von Sicro
So geht es auch:

Code: Alles auswählen

a = Random(51)
Debug Chr(65 + a + a / 26 * 6)
Mfg DerProgger

Verfasst: 30.09.2006 21:12
von Kiffi

Code: Alles auswählen

Debug Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Random(Len("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")-1)+1,1)
Bild

Verfasst: 30.09.2006 22:26
von Kaeru Gaman
@Kiffi

:lol: cool, das is ja mal tödlich unkonvetionell.
(obwohl du in sofern gemogelt hast, dass man den string
strenggenommen auch als array interpretieren müsste. ;) )

für A-Z,a-z unnötiger aufwand, aber ne prima idee für unregelmäßige reihen.

die idee von DerProgger is auch interessant,
obwohl es ja genaugenommen zwei zuweisungen sind. ;)
mir schwebte auch die lösung vor, wie sie Rayman gepostet hat.

...und da ich vorhin mich der gleichmäßigkeit der verteilung versichern wollte...
ich will euch den code nicht vorenthalten:

Code: Alles auswählen

InitSprite()
InitKeyboard()
OpenScreen(1024, 768,32,"test")
Dim a(64)
Delay(1000)
Repeat
  ClearScreen(0)
  ExamineKeyboard()
  For n=0 To 9                              ; 10 pro Frame, damit's schneller ist
    cha = 65+Random(25) + 32*Random(1)      ; zufällig aus A-Z, a-z
    a( cha - 64 ) + 1                       ; im Array zählen, wieviele davon
  Next
  StartDrawing(ScreenOutput())
    For n=0 To 64
      DrawingMode(1)
      DrawText(0,12*n,Chr(n+64),$FF8040)    ; zugeordnetes Zeichen anzeigen
      Box(16,12*n,a(n),10,$804020)          ; \
      DrawingMode(4)                        ;  }- gerahmte Box zeichnen
      Box(16,12*n,a(n),10,$FF8040)          ; /
    Next
  StopDrawing()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

Verfasst: 30.09.2006 22:47
von onny
Verstößt leider gegen die Regeln -.-

Code: Alles auswählen

If Random(1) = 1 : acci = 65 : Else : acci = 97 : EndIf
Debug Chr(acci + Random(25))
Zufällige Buchstaben klein/groß

Verfasst: 30.09.2006 23:01
von Kaeru Gaman
nu, das aber ja schon das richtige prinzip.

der abstand von 65 bis 97 ist 32...

statt

Code: Alles auswählen

If Random(1) = 1 : acci = 65 : Else : acci = 97 : EndIf 
könntest du auch schreiben:

Code: Alles auswählen

acci = 65 + 32*Random(1)
...und wenn du jetzt die lösung oben anschaust, wirst du sehen,
dass es genau darauf hinausläuft.

ERKLÄRUNG:
Random() liefert ein Integer, kein Float.
dass heißt, wenn du Random(3) schreibst,
wird es immer genau 0, 1, 2 oder 3 liefern, niemals 1.5

wenn du das ergebnis von Random mit einem Faktor multiplizierst,
wird der Faktor zum Abstand.

d.h. 100*Random(3) wird 0, 100, 200 oder 300 liefern,
aber niemals 97 oder 251.

deswegen liefert 32*Random(1) immer 0 oder 32,
also die entscheidung ob groß oder klein,
und niemals irgendwelchen mist dazwischen.
;)

Verfasst: 01.10.2006 10:03
von onny
danke für den guten tipp :allright:
wieder was gelernt :D

Verfasst: 01.10.2006 12:49
von remi_meier
Ich will auch :D

Code: Alles auswählen

Debug Chr((Random(1) + 2) << 5 + 1 + Random(25))

Verfasst: 01.10.2006 12:52
von STARGÅTE
Ich habe auch noch was :

Das hier gibt nur Vokale aus, leider ist es mir noch nicht gelungen daraus eine einzige Zeile zu machen,aber ich denke noch ^^

Code: Alles auswählen

a = Random(4)-2
Debug Chr(73+Int((5+(a-0.1)/Abs(a-0.1)))*a)

Verfasst: 01.10.2006 13:27
von AND51
> leider ist es mir noch nicht gelungen daraus eine einzige Zeile zu machen
Nö, wie auch? a kommt in der 2. Zeile ja 3x vor, da muss man sich sichergehen, dass man 3x dieselbe Zufallszahl erhält (RandomSeed()).

Ich habe deine Lösung mal auf einen Einzeiler gebracht:

Code: Alles auswählen

Debug Chr(73+Int((5+(Random(4+(RandomSeed(0)*0))-2-0.1)/Abs(Random(4+(RandomSeed(0)*0))-2-0.1)))*Random(4+(RandomSeed(0)*0))-2)
Leider wirst du feststellen, dass der Code —trotz eingebauter Random() Funktion— immer nur denselben Buchstaben erzeugt...

Ohhhhhhhhhhhhhh... :roll:

Verfasst: 01.10.2006 13:43
von STARGÅTE
lol weil er ja die festen Zufallszaheln aus der Datenbank nimmt

ich habe ja schon versucht die kleine Gleichung die da steht x = a*(5+a/|a|) nach a auszulösen, sodass ich nur ein Random brauche