Hallo, Ich würde gerne eine Zufallszahl mit der Funktion rand bzw srand erzeugen. Das Beispiel von www.keil.com funktioniert leider nicht: #include <stdlib.h> #include <stdio.h> /* for printf */ void tst_rand (void) { int i; int r; for (i = 0; i < 10; i++) { printf ("I = %d, RAND = %d\n", i, rand ()); } } MFG KV3000
Und was funktioniert nicht? Vielleicht musst Du noch was includen, damit er RAND kennt, z.B. math.h Schau mal nach, was RAND zurückliefert, ist das wirklich int (%d) oder float? Je nach Implementierung kann man den Wertebereich auch als Argument angeben: rand(1000) erzeugt Zahlen im Bereich 0..999 oder 1000. Pseudozufallszahlen kann man auch leicht selbst generieren mit einem CRC-Generator und anschließender Skalierung.
Hallo, Der Fehler: es werden einfach keine Zufallszahlen erzeugt. Bei meinem vorigen Post hab ich eh ein Bild mit den Warnings hochgeladen. Ich halte es für äußerst unwahrscheinlich, dass da noch weitere Bibliotheken aufgerufen werden müssen. - Ich hab das Beispiel von der Herstellerseite des Progtools kopiert. - Trotzdem scheint der Compiler die rand-Funktion, die normalerweise in der stdlib sein sollte nicht zu finden. CRC-Generator? Kannst bitte einen Link zu einem Beispiel posten? MFg KV3000
Hallo, schau mal hier: http://homepage.mac.com/afj/lfsr.html Du kannst dir einen Zufallsgenerator selber programmieren, indem du ein Rückgekoppeltes Schieberegister wie im Link beschrieben verwendest. Wenn du mehr Infos suchst: Google Stichworte -> Linear Feedback Shift Register(s). Ich habe mich da mal ne Zeit lang mit beschäftigt und Google ist da sehr gut. Vielleicht findest du ja auch ein C Code Beispiel das dir weiter hilft. MFG Kai
Nachtrag zum C Code: Die gleiche Seite, gleich am Anfang. Hier der direkte Link http://homepage.mac.com/afj/lfsr.c MFG Kai
Dett Ding macht Zufall, rein und klar wie ein Bergquell. SINT32 ist nen signed integer mit 32 Bit. Vorsicht allerdings: z.b. Visual C macht signed- Zufallswerte, Bit 31 ist also manchmal gesetzt, AVR-GCC zeigt in Bit 31 immer ne Null, Grund ist mir nicht so richtig klar. Spaß! Detlef #define IA ((SINT32)16807) #define IM ((SINT32)2147483647) #define IQ ((SINT32)127773) #define IR ((SINT32)2836) #define MASK ((SINT32)123459876) /*********************************************************************** *******/ SINT32 zufall() { /*********************************************************************** *******/ static SINT32 idum=2; SINT32 k; idum ^= MASK; k=(idum)/IQ; idum=IA*(idum-k*IQ)-IR*k; if (idum < 0) idum += IM; k=(idum); idum ^= MASK; return k; }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.