Hallo
Eine Suche hier im RN-Forum nach "zufallszahlen AND asuro" findet genau drei Threads. Deinen hier, einen mit einer netten kleinen Zufallsfunktion:kann mir da jemand helfen?
oder gibt es sogar eine elegantere lösung um zufallszahlen zu erzeugen?
https://www.roboternetz.de/phpBB2/ze...lszahlen+asuro
Der dritte Thread erklärt, wie man sowas anstellen kann und wie ich es auch machen würde:
https://www.roboternetz.de/phpBB2/ze...lszahlen+asuro
Alle zur Verfügung stehenden ADC-Werte verknüpfen:
Es funktioniert leidlich ;)Code:#include "asuro.h" #define versuche 5000 // Anzahl der Versuche #define max 50 // Werte von 0 bis max-1 erzeugen #define balken 0 // 1 für Anzeige mit Balken unsigned char j, zahlen[max]; unsigned int i; unsigned int rnd(unsigned char bereich) { static unsigned int alter_zufall; unsigned int zufall, odo[2], line[2], bat, ports[2]; OdometrieData(odo); LineData(line); bat=Batterie(); ports[0]=256*PINB+PINC; ports[1]=256*PINC+PIND; zufall=~alter_zufall^odo[0]^odo[1]^line[0]^line[1]^bat^ports[0]^ports[1]^TCNT2; alter_zufall=zufall; while(zufall>=bereich) zufall-=bereich; return(zufall); } int main(void) { Init(); for(i=0; i<max; i++) zahlen[i]=0; SerWrite("\n\rZufallszahlen mit dem asuro\n\n\r", 32); while(1) { i=versuche; while(i-- && ++zahlen[rnd(max)]); // Zufallswerte einlesen (0 bei Überlauf!) SerWrite("\n\rVerteilung nach ", 18); PrintInt(versuche); SerWrite(" Versuchen mit Maxwert ", 23); PrintInt(max); SerWrite(":\n\n\r", 4); for(i=0; i<max; i++) // Verteilung der Werte ausgeben { PrintInt(i); if(balken==1) for(j=0; j<zahlen[i]; j++) SerWrite(".",1); SerWrite(" ", 1); PrintInt(zahlen[i]); SerWrite("\n\r", 2); } while(1); } return(0); }
Gruß
mic





 
			
			
 
					
					
					
						 Zitieren
Zitieren auch wenn ich nciht zu 100% verstehe, was da gemacht wird, aber hey
 auch wenn ich nciht zu 100% verstehe, was da gemacht wird, aber hey 


Lesezeichen