sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help..

larss

Mitglied
hallo..

ich möchte gern ein script für einen midi-synthesizer schreiben, mit dem man zufallswerte in einem bestimmten bereich erstellen kann. diese sollen so aufgeteilt werden, dass nur gerade hexadezimale werte zwischen dezimal 0-127 vorliegen, die sich auf 2 bytes verteilen. also z.b. dez. wert 5 ergibt hexadezimal 00 0a und der dez. wert 65 ergibt hexadez. 01 02. hängt u.a. damit zusammen, dass man per midi nur 7 bit pro byte übertragen bzw. verwalten kann. wie kann man hierbei zufallsberechnungen nur im bereich von z.b. 5-65 (dez.) erzeugen? sollte man dann lieber bitweise zufallsberechnungen machen und wie funktioniert dies am besten?

bei anderen parametern wiederum gibt es upper- und lower-bytes. hierin sind teilweise mehrere parameter (z.b. switches, die weniger bits benötigen und somit ebenfalls weniger wie 127 werte ergeben) verschlüsselt. spätestens hier bräuchte ich wahrscheinlich eine bitweise zufallsberechnung, damit ich nur bestimmte bits bzw. somit z.b. nur einen der parameter mit zufallswerten versehen kann..

wie kann man die berechneten hexadezimalen zufallswerte am besten fortlaufend in eine datei schreiben, da ich die bereiche, in denen zufallsberechnungen stattfinden sollen, gerne dezimal bei den jeweiligen grenz-variablen hinterlegen möchte und wie kann man diese generell von dezimal nach hexadezimal/binär wandeln und umgekehrt?

tausend dank für hilfe
lars

;)
 
Zuletzt bearbeitet:
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

Hi,

einen hexadezimalen Zufallswert von 0 - 127 kannst Du z.B. so ausgeben:
HTML:
var a = int(Math.random() * 128);

var h = decToHex(a);

alert(a + " -> " + h);

function decToHex(n) {
	var h = int(n / 16);
	n -= h * 16;
	var l = n;
	h = hdig(h);
	l = hdig(l);
	return h + l;
}

function hdig(n) {
	if (n > 9) {
		return String.fromCharCode(65 + (n - 10));
	} else {
		return n.toString();
	}
}
Für Werte mit mehr als 2 hexadezimalen Stellen muss die Funktion decToHex natürlich erweitert werden.

Gruß
.
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

hast du einen tip, wie man nur bestimmte bits eines bytes per zufalls berechnen und das entstandene byte danach hexadezimal wandeln und fortlaufend in eine datei schreiben kann?

wie kann man zufallswerte nur an geraden zahlen erzeugen, diese dann in jew. 2 byte aufteilen und ebenfalls in eine datei schreiben? es sollen also nur hexadezimale werte zulässig sein zwischen: 00 00, 00 02, 00 04, ..., 00 7f, 01 00, 01 02, 01 04, ..., 01 7f. am besten wäre es, wenn man diese noch mit jew. einer dezimalen min.- und max.-variable begrenzen könnte. also z.b. nur werte zwischen dez. 5-65..

thanx
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

Hi,

Bitweise: muss ich mal schauen. Normalerweise so:
HTML:
var bits = new Array();
var zahl = 0;

for (var i=0; i<8; i++) {
	bits[i] = int(Math.random() * 2);
	zahl += bits[i] << i;
}
, aber ich weiß grade nicht, ob JS den Operator << auch kennt.

Nur gradzahlige Zufallszahlen bekommst Du so:
HTML:
function evenRand(limit) {
	return int(Math.random() * (limit) / 2)) * 2;
}

Mit JavaScript kannst Du überhaupt nichts in Dateien schreiben; Du könntest bestenfalls ein Formular an ein serverseitiges Script schicken und dort speichern.

Gruß
.
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

hi..

hast mir bis jetzt super weitergeholfen.. vielen dank erstmal an dich

js kennt den operator <<. hab ich zumindestens gesehen..

wie kann man es angehen, nur dez. werte zwischen 5-65 (um bei meinem beispiel zu bleiben), die ich in einer unter- und obergrenz-variablen speichern möchte, per zufall erzeugt und diese dann auf 2 bytes aufteilt? also z.b. werte zwischen hexadezimal 00 0a (dez. 5) und 01 02 (dez. 65). wenn es auch dezimal auf 2 bytes aufteilbar und in eine datei schreibbar ist, wäre es ebenfalls ok.

das script würde ich gern auf meinem persönlichem server laufen lassen, um alles in eine datei speichern zu können.

gruß
lars
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

verstehe das Problem nicht ganz:

Lass Dir eine Zufallszahl zwischen 0 und 60 berechnen, addiere 5 dazu und jage es durch die Funktion decToHex(). ;)

Gruß
.
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

stimmt hast vollkommen recht.. ;)

sollte ich das programm lieber in java programmieren, damit ich auf dateien zugreifen bzw. die werte fortlaufend in eine datei schreiben kann ohne einen server zu benötigen? wäre dann doch bestimmt komfortabler?! oder würdest du noch was ganz anderes vorschlagen? möchte halt ein programm haben, dass ich net kompilieren muss, da es mir net so auf schnelligkeit ankommt, dafür aber die jeweiligen grenz-parameter-variablen schnell im quellcode ändern kann.

frage mich gerade, ob man die werte überhaupt nach hexadezimal wandeln lassen muss oder ob man das jeweils entstandene byte auch so fortlaufend in eine datei schreiben kann.. geht das?

das mit der binär-rechnerei muss aber sein, da ja teilweise mehrere parameter in einem byte verschlüsselt sind (bis zu 3). wird bei der obigen funktion zur bitweisen zufallsberechnung der entstandene wert eigentlich wieder in ein byte zurückgewandelt?

gruß
lars
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

Klar, JAVA - warum nicht?

Kleine Sachen, die "auf die Schnelle" gehen müssen, mache ich oft mit Flash und PHP (zum Speichern) - besonders, weil eine GUI in Flash mit wenigen Klicks bzw. Zeilen erstellt ist. ;)

Zum Thema hex vs. Zahl: Das kommt darauf an, wie Du die Daten brauchst. Ich würde wahrscheinlich direkt Bytes in die Datei schreiben - bei Bedarf kannst Du die Daten ja in jedem beliebigen Format ausgeben. Spart ausserdem Speicher; FF als String braucht z.B. schon 2 Bytes... ;)


Gruß
.
 
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

den nachteil von java finde ich, dass die applets doch wieder kompiliert werden müssen?! gibt es auch einen anderen weg? oder wie kann man die ganzen begrenzungs-variablen in einer einstellungsdatei speichern, die man schnell mal editieren kann und wie kann man dort die werte der variablen wieder zur berechnung herausholen?

kennst du einen guten java-editor und vielleicht eine (deutsche) internet-seite mit einer beschreibung der ganzen objekte? könnte man das alles auch in php programmieren ohne einen server einrichten zu müssen oder werden php-scripte auch kompiliert?

genauso meinte ich es ja.. ;) also ein zufallswert (von 0-127) darf generell jeweils nur ein byte beanspruchen.. dann würd es doch sicherlich auch gehen, wenn man es dezimal belässt?!

kannst mir nochmal ein beispiel zeigen, wie man das ergebnis der bitweisen zufallsberechnung wieder zurückwandelt in ein byte?

gruß
lars
 
Zuletzt bearbeitet:
Re: sind zufallswerte dezimal, hexadezimal und/oder binär programmierbar? please help

Hier steht, wie man die einzelnen Bits zu einer Dezimalzahl zusammensetzt.

Für welche Sprache Du Dich entscheidest hängt primär von Deinen Präferenzen und Fähigkeiten ab. Von Applets war keine Rede; der Kompiliervorgang ist per Tastendruck in wenigen Sekunden getan...

Natürlich kannst Du beliebige Parameter in .ini-Dateien speichern (unabhängig von der Entwicklungsumgebung).

Blieben noch VB(Script), C(++), Delphi usw. Ausführliche Referenzen findest Du mit :google: garantiert (bzw. auch F1 und die diversen Programmierforen hier helfen weiter).

Gruß
.
 

Neue Beiträge

Zurück