Hallo

kann mir da jemand helfen?
oder gibt es sogar eine elegantere lösung um zufallszahlen zu erzeugen?
Eine Suche hier im RN-Forum nach "zufallszahlen AND asuro" findet genau drei Threads. Deinen hier, einen mit einer netten kleinen Zufallsfunktion:
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:
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);
}
Es funktioniert leidlich ;)

Gruß

mic