String-Index beim BCB
-
es ist nicht das Gleiche.
Wie wäre es mit (rand()%4)+1;
oder besser(rand()%(name.Lenght()-1))+1
[ Dieser Beitrag wurde am 27.06.2003 um 11:36 Uhr von Braunstein editiert. ]
-
#include <stdlib.h> // für random() void __fastcall TForm1::FormShow(TObject *Sender) { // zufallsgenerator initialisieren randomize(); } void __fastcall TForm1::Button1Click(TObject *Sender) { // random liefert eine zufallszahl im bereich 0-4; int zahl = random(5) + 1; }
-
Dann bau dir ne abfrage
if(zufall == 0) zufall++;
dann is das auch kein prob mehr.
-
Danke Sunday, so einfach ist das beim BCB, cool.
-
Original erstellt von Spieleprogrammierer:
[...]so einfach ist das beim BCB, cool.Nein, so einfach ist das mit C.... das hat nix mit dem BCB zu tun. Vielleicht solltst du über Vorschläge anderer erst nachdenken, bevor du sie als "Fehlerhaft" beurteilst...
-junix
-
junix, ich habs noch nie erlebt, dass rand()%5 0 zurückliefert. und die Funktion random(); msagte jemand zu mir wrde aus C++ rausgenommen, sodass man srand(); nehmen müsste. Nicht hier, aber in meiner Schule.
-
srand:
Beschreibung
Initialisiert den Zufallszahlengenerator.
Der Zufallszahlengenerator wird beim Aufruf von srand mit einem Argumentwert von 1 neu initialisiert. Durch den Aufruf von srand mit einem bestimmten Parameter seed kann er auf einen neuen Startwert gesetzt werden.
Rückgabewert
Keiner
Beschreibung
Zufallszahlengenerator.
random liefert eine Zufallszahl im Bereich von 0 bis (num-1) zurück. random(num) ist ein Makro, definiert in stdlib.h. Sowohl num
als auch die zurückgelieferte Zufallszahl sind Integerwerte.Rückgabewert
random liefert einen Zahl zwischen 0 und (num-1) zurück.
Protabilität: Win32
Noch fragen ?
-
Original erstellt von Spieleprogrammierer:
junix, ich habs noch nie erlebt, dass rand()%5 0 zurückliefert.Da es sich um eine Zufallszahl handelt, wirst du wohl zufällig dieses Verhalten nie erlebt haben... oder (was ich mir eher vorstellen kann) es hat einen Fehler versacht, du hast ihn versucht zu reproduzieren, ging nimma, -> da war doch kein fehler
Original erstellt von Spieleprogrammierer:
und die Funktion random(); msagte jemand zu mir wrde aus C++ rausgenommen, sodass man srand(); nehmen müsste. Nicht hier, aber in meiner Schule.Komplett falsch. randomize() ist eine original Borland verbesserte Initialisierungsfunktion die vermutlich intern nix weiter macht als srand aufzurufen. srand hingegen ist ANSI C.
-junix
-
Au jetzt seh ich das erst. Du hast ja srand mit random verglichen. Das zu vergleichen ist Äpfel mit Birnen verglichen denn srand macht nicht das Selbe wie random... und das wurde dir bereits anderswo eigentlich eingeprügelt.
-junix
-
Original erstellt von Spieleprogrammierer:
Wieso sollte es 0 liefern?
rand()%(4-1+1)+1;
ist das selbe wie
rand()%5;
Alsodas versteh ich jetzt wieder nicht.ist mir klar. ist ja auch mathe. du solltest doch nix mehr posten, was mit mathe zu tun hat.
rand()%(4-1+1)+1;rand()%4+1;
und hier greift "punktrechnung vor strichrechnung" und du bist raus.
-
jajaja, is ja gut, ich glaube nach 3 Antworten, die die selbe aussage haben, kann ich's mir gerade noch so von alleine einprägen.