rand(), srand(), randomize() ... welche Funktion macht denn nun was?
-
Klar als Funktion. Auch wenn ich mich auf
inline void randomize() { std::srand(std::time(0)); }
bescheiden würde.
-
ohne cast wird das ja wohl kaum ohne warning gehen : P
-
volkard schrieb:
Klar als Funktion. Auch wenn ich mich auf
inline void randomize() { std::srand(std::time(0)); }
bescheiden würde.
Wodurch du allerdings meistens eine Warnung bekommst (
std::time_t
undunsigned int
sind meistens nicht gleich), keine Log Möglichkeiten für den Seed hast und es auch für das Debuggen eher unangenehm ist. Zudem ist der Funktionsname absolut nichtsaussagendNachteile bei der Release Version hast du bei meiner gegenüber deiner Version aber sehr wahrscheinlich keine, da alles wegoptimiert werden kann. Und auch wenn es nicht der Fall ist, ist der Unterschied gering.
Grüssli
-
Also ich logge mir den seed auch gerne mit. Macht das Debuggen leichter.
-
Dravere schrieb:
Zudem ist der Funktionsname absolut nichtsaussagend
Hort, hört.
http://www.google.de/search?hl=de&q="c%2B%2B+randomize"&meta=
http://www.google.de/search?hl=de&q="c%2B%2B+seedStdCRandom"&meta=randomize ist nicht gerade unbekannt und ich verwende es, weil ich es nicht dokumentieren muß. ok, die warnung kann man schön mit einem (functional-style-)cast wegmachen. logst du seeds? habe ich noch nie gemacht.
ich sehe nur eine verbesserung, daß man am ende der randomize() noch einmal rand() aufruft, damit das erste vom user gesehene rand() nicht so einfach von Programmstart zu Programmstart aufsteigend ist.
-
Dravere schrieb:
Zudem ist der Funktionsname absolut nichtsaussagend
Oh, da kennt sich jemand sehr gut aus.
-
volkard schrieb:
Dravere schrieb:
Zudem ist der Funktionsname absolut nichtsaussagend
Hort, hört.
http://www.google.de/search?hl=de&q="c%2B%2B+randomize"&meta=
http://www.google.de/search?hl=de&q="c%2B%2B+seedStdCRandom"&meta=Hä? Ein Beweis mit Google? Weil alle A sagen ist auch A richtig, oder wie?
Ich finderandomize
ein schrecklicher Name, da er in keinem Kontext steht.randomize
was? Die Gurken in meinem Garten?
Nur weil der Name bei gewissen Implementationen üblich ist, heisst es doch nicht, dass er auch gut ist.volkard schrieb:
logst du seeds? habe ich noch nie gemacht.
So gut wie immer. Sehr praktisch, wenn du gleiche Abläufe nochmals wiederholen willst.
Grüssli
-
Dravere schrieb:
volkard schrieb:
Dravere schrieb:
Zudem ist der Funktionsname absolut nichtsaussagend
Hort, hört.
http://www.google.de/search?hl=de&q="c%2B%2B+randomize"&meta=
http://www.google.de/search?hl=de&q="c%2B%2B+seedStdCRandom"&meta=Hä? Ein Beweis mit Google? Weil alle A sagen ist auch A richtig, oder wie?
Ich finderandomize
ein schrecklicher Name, da er in keinem Kontext steht.randomize
was? Die Gurken in meinem Garten?
Nur weil der Name bei gewissen Implementationen üblich ist, heisst es doch nicht, dass er auch gut ist.volkard schrieb:
logst du seeds? habe ich noch nie gemacht.
So gut wie immer. Sehr praktisch, wenn du gleiche Abläufe nochmals wiederholen willst.
Grüssli
Ich sehe das genau so
Auch das loggen des Seeds ist eine sehr sinnvolle Sache. Auf diese Weise kann einen aufgetretenen Fehler einfach reproduzieren.
Des Weiteren werden bei Spielen meistens nur Seeds übertragen, um ein Level darzustellen. Alles in allem: Definitiv sinnvoll!
-
Dravere schrieb:
Ich finde
randomize
ein schrecklicher Name, da er in keinem Kontext steht.randomize
was? Die Gurken in meinem Garten?
Nur weil der Name bei gewissen Implementationen üblich ist, heisst es doch nicht, dass er auch gut ist.Genau. Ich hätte jetzt eher darauf getippt, dass die Funktion eine Zufallszahl in einem Bereich zurückgibt oder etwas in der Art. Aber als letztes, dass damit
srand()
aufgerufen wird.Allerdings finde ich
seedStdCRandom
auch schrecklich.
Ganz klar ist da nicht, was gemacht wird. Und das "C" verwirrt meiner Ansicht nach auch. Ich hätte eherInitRandSeed()
oder sowas gewählt, aber das ist auch Geschmackssache. Kommt auch ein wenig drauf an, ob man noch andere ähnliche Funktionen bereitstellt.
-
Nexus schrieb:
Genau. Ich hätte jetzt eher darauf getippt, dass die Funktion eine Zufallszahl in einem Bereich zurückgibt oder etwas in der Art. Aber als letztes, dass damit
srand()
aufgerufen wird.Vielleicht habe ich ja zu viel Basic geschnupft. http://msdn.microsoft.com/de-de/library/8zedbtdt(VS.80).aspx
-
Nexus schrieb:
Allerdings finde ich
seedStdCRandom
auch schrecklich.Gut, so ganz unrecht hast du nicht. Wie wäre es mit:
namespace cstd { inline unsigned int initRandomSeed() { // ... } } // ... int main() { cstd::initRandomSeed(); }
Oder als namespace eher
cexstd
(für c extended standard?)? Finde ich zwar nicht wirklich besserVielleicht läuft es aber dann auch wieder wirklich darauf hinaus:
Nexus schrieb:
..., aber das ist auch Geschmackssache. Kommt auch ein wenig drauf an, ob man noch andere ähnliche Funktionen bereitstellt.
Hauptsache ist immerhin, dass man erkennt, dass ein Seed gesetzt wird.
volkard schrieb:
Vielleicht habe ich ja zu viel Basic geschnupft.
Ist zwar ein wenig Off-Topic, aber darf ich fragen, wofür du noch Visual Basic einsetzt? Nur früher, noch heute nur Wartung oder noch heute auch neue Projekte? Und natürlich was für Projekte, vor allem wenn du noch neue damit anfängst.
Grüssli
-
Dravere schrieb:
Ich finde
randomize
ein schrecklicher Name, da er in keinem Kontext steht.Aber wenigstens bewahrt er die Tradition -
srand
ist auch nicht gerade sprechend.
-
Registrierter Troll schrieb:
Aber wenigstens bewahrt er die Tradition -
srand
ist auch nicht gerade sprechend.
Da fragt man sich zum Teil aber sowieso, was man sich beim C Standard eigentlich gedacht hat. Weiss das zufälligerweise jemand?
Absolute Favoriten sind da zum Beispiel:mbstowcs
oderwcstombs
. Man hat das Gefühl, jemand hätte wild irgendetwas eingetippt (ja, ich kenne die Bedeutung).Grüssli
-
Dravere schrieb:
wcstombs
.Tombs sind doch Gräber, WC sollte klar sein. Hm, was bedeutet wohl S? Safe? Sichere Toilettengräber?
-
So true...
-
Nexus schrieb:
Dravere schrieb:
wcstombs
.Tombs sind doch Gräber, WC sollte klar sein. Hm, was bedeutet wohl S? Safe? Sichere Toilettengräber?
Das ist denk ein Mehrzahl-s.. Das ist doch soo offensichtlich. Da hättest du selbst drauf kommen können...