CCS C: Zufallszahlen generieren
Freitag, 18. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Beispielcodes und Projekte  |  CCS C: Zufallszahlen generieren « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: CCS C: Zufallszahlen generieren  (Gelesen 7295 mal)
 
Fernando Heitor
Administrator
Hero Member
*****
Offline Offline

Beiträge: 577


Der B


Profil anzeigen WWW
« am: Februar 28, 2004, 19:20:31 »

Hallo Leute,
da ich heute schon wieder eine Email bekommen habe, wie man Zufallszahlen generieren kann und wo sich die Funktion Rand befindet.
Auch die hier vor kurzem gestellte Frage wie man Zufallszahlen generieren kann, stelle ich fest das die Frage vielleicht öfters kommen wird.
Deshalb stelle hier ein Beispielcode um Zufallszahlen zu generieren dar.

Zuerst kommen die beiden Routinen srand() und rand():
Code:

char random_byte;

char rand(void) {
char sum;

sum = 0;

// This calculates parity on the selected bits (mask = 0xb4).
if(random_byte & 0x80)
sum = 1;

if(random_byte & 0x20)
sum ^= 1;

if(random_byte & 0x10)
sum ^= 1;

if(random_byte & 0x04)
sum ^= 1;

random_byte <<= 1;

random_byte |= sum;

return(random_byte);
}

void srand(char seed) {
random_byte = seed;
}


Im Hauptprogramm definierst du mit der Routine srand() den Startwert, mit dem dann rand() die Zufallszahlen generiert werden kann.

Code:

srand(7);


Der Wert kann irgend ein Wert, aber nicht die Zahl 0.



Um eine Zufallszahl abzurufen, gibst du folgendes ein:

Code:

wert=rand();


Wert ist eine 8-Bit Variable (0..255)


Fernando Heitor
Gespeichert

:lol: Gel
Thorsten
Gast
« Antworten #1 am: Mai 23, 2005, 20:11:55 »

Juhu,
fast das was ich suche,

hast Du das auch in Assembler??

Danke Gruß Thorsten
Gespeichert
Sandynister
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 557



Profil anzeigen WWW
« Antworten #2 am: Mai 24, 2005, 11:10:35 »

Fernando ist im Moment schwer beschäftigt und hat wenig Zeit. In ASM hat er den Code aber bestimmt nicht. Ich denke das sich das aber fast eins zu eins in ASM übernehmen lassen sollte. Sind doch alles ASM-Befehle...

In diesem Sinne
Gespeichert

Das beste und lauteste Hobby der Welt unter http://normu.net ;-)
spruce
Newbie
*
Offline Offline

Beiträge: 35


Profil anzeigen
« Antworten #3 am: April 24, 2006, 04:15:59 »

Hallo!!!

Ich bräuchte zufallszahlen zwischen 0 und 9. wie muss ich da diesen Code verändern? bzw. was macht dieser Code eigentlich oder besser gefragt, wieso macht man das so...??
sind die Zufallszahlen eingentlich gleichverteilt? wie siehts mit der periodizität aus? hab jetz schon ne weile rumgegooglet, bin aber nicht ganz schlau geworden... Weinen
Gespeichert
Leonhard
Newbie
*
Offline Offline

Beiträge: 24



Profil anzeigen WWW
« Antworten #4 am: August 04, 2006, 07:04:25 »

Ich hab mir einen Schinken zugelegt mit dem Titel: "Numerical Recipes in C".
Erschienen im Cambridge Verlag (ISBN 0-521-43108-5, EUR 66,50 @amazon).

Der Schinken ist in englisch und behandelt "nahezu alles", was sich mit
Mathematik lösen lässt. Das geht mit dem linearen Gleichunssystemen
los, geht z.B. über Sortieren, FFT/IFFT, CRC-Check bis hin zu Codes.

Das Kapitel über Zufallszahlen umfasst 42 Seiten.

Neben dem theoretischen Hintergrund sind so gut wie immer Programmbeispiele
in C dabei. Es gibt auch eine CD mit den Sourcen.

Das Buch ist zwar überaus trocken, aber wem jagt es nicht von Haus aus einen
kalten Schauer über den Rücken, wenn er an partielle Differentialgleichungen
denkt?

Gruß
...Leo
Gespeichert
mischamex
Gast
« Antworten #5 am: August 13, 2008, 05:11:57 »

;**************************************************************************
;                   Zufallszahlen (RANDOM = 1...FE)
;**************************************************************************
;RANDOM muss zum Start <> sein und enthaelt nach Rueckkehr die Zufallszahl
; im Bereich 0...255
rand:
        RLF     RANDOM, W       ;
        RLF     RANDOM, W       ;
        BTFSC   RANDOM, 3       ;
        XORLW   1               ;
        BTFSC   RANDOM, 4       ;
        XORLW   1               ;
        BTFSC   RANDOM, 5       ;
        XORLW   1               ;
        MOVWF   RANDOM          ;
        RETURN
;**************************************************************************
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.046 Sekunden mit 18 Zugriffen.
 
Top! Top!