Boost Random
-
Hallo
Das war nur eine Vermutung von mir. Ich bin mir also nicht sicher.
chrische
-
chrische5 schrieb:
Hallo
Das war nur eine Vermutung von mir. Ich bin mir also nicht sicher.
chrische
Achso, ok.
Könntest du die cpp DAtei mal bei dir Compiliren um zu sehen ob es da klappt? Oder jemand der Boost hat?
mfg.
-
Lesen ist schon schwer, gell?
// Define a random number generator and initialize it with a reproducible // seed. // (The seed is unsigned, otherwise the wrong overload may be selected // when using mt19937 as the base_generator_type.) base_generator_type generator(42u);
-
Ich hab mich noch nie mit boosts Random beschäftigt, hab es jetzt ebend einfach mal überflogen.
Aber so wie ich das interpretiere, handelt es sich um einen reproduzierbaren Testcase. So steht es jedenfalls in den Kommentaren des Demo-Sourcecodes. D.h. auch das die Werte immer wieder gleich sein müssen, damit die Lib auch auf Richtigkeit überprüft werden kann. Das ist bei Testcases aller Art so, das die Werte bei jedem Testdurchlauf gleich sein müssen. Sonst hat die Lib einen Fehler.
Wenn du dir auch mal die Introduction zu der Random Lib durchliest, wirst du auch feststellen, das Boost.Random auch vorrangig ein Random-Interface ist. Scheint wohl ein Policy-Konzept zu sein. D.h. du als Lib-Benutzer kannst und mußt entscheiden, welches Verhalten Random haben soll. In der Demo wurde eine uniform-Policy (eintöniges Verhalten) gewählt:
// This is a reproducible simulation experiment. See main(). void experiment(base_generator_type & generator) { // Define a uniform random number distribution of integer values between // 1 and 6 inclusive. typedef boost::uniform_int<> distribution_type; typedef boost::variate_generator<base_generator_type, distribution_type> gen_type; gen_type die_gen(generator, distribution_type(1, 6));Das hab ich nach 3 Min. überfliegen der Doku und Source raus gelesen.
Deshalb: Doku und Sourcecode bzw. Source-Kommentare lesen!!!
-
edit: Tschuldigung aber mein Englisch (und mein C++ auch nicht) ist nicht so gut, ich versteh immmer nur die Hälfte von der Doku. Ich wollte ja nur zufallszahlen generieren...

mfg.
-
Achja, ich kann übrigens das Buch "Modernes C++ Design" nur empfehlen, das ich seit gestern habe. Da sind solche Konzepte auch drin.

-
Oh man, Boost ist ja voll schlecht designt.

-
Artchi schrieb:
Achja, ich kann übrigens das Buch "Modernes C++ Design" nur empfehlen, das ich seit gestern habe. Da sind solche Konzepte auch drin.

Ich hab Effektic C++ programmieren, welches allerdings zu hoch für mich ist. Werde mir das Buch mal angucken.
mfg.
-
joomoo schrieb:
Artchi schrieb:
Achja, ich kann übrigens das Buch "Modernes C++ Design" nur empfehlen, das ich seit gestern habe. Da sind solche Konzepte auch drin.

Ich hab Effektic C++ programmieren, welches allerdings zu hoch für mich ist. Werde mir das Buch mal angucken.
mfg.
Dann ist das Buch *viel* zu hoch für dich.
-
Also Zufallszahlen kannst du ja mit der Lib erzeugen, das ist dir doch jetzt klar? Nur halt dieses eine spezielle Demo erzeugt halt immer die gleichen "Zufallszahlen", mehr nicht.
Es sind ja auch weitere Generatoren neben dem uniform verfügbar, einfach mal die Doku durch stöbern.
Englisch solltest du zumindest lesen können. Ich selbst bin nicht der Englisch-Profi, aber ich lese viel englisch. Sprechen und schreiben ist dann eher schon wieder schlechter bei mir. Aber durch das viele lesen, kann ich schon gut solche Dokus verstehen.
"Effektiv C++" ist mehr ein technisches Buch. Sollte man auch lesen, aber beschäftigt sich praktisch nicht mit Design und Pattern. Ist eine ganz andere Kategorie als das "Modernes C++ Design". Das mit den Random-Generatoren von Boost ist z.B. ein Konzept und nichts technisches. OK, man baut es dann natürlich letztendlich technisch mit Templates und Vererbung, aber der eigentliche Gedanke ist das Design und Konzept.
Um aber "Modernes C++ Design" zu verstehen, muß man sich mit der Sprache C++ gut auskennen. Also man sollte schon mal Templates benutzt und auch mal selbsts Template-Klassen gebaut haben. Damit man weiß was da passiert.