randsample / Random Dissolve / randIntNoRep - wie geht das?

OP Persönliche Seite #3604191
Lesenswert?
• ▲
▼
Wie erzeugt man Interger-Zahlen in Pseudo-Zufälliger Reihenfolge, ohne 
dass Zahlen doppelt sind? Und das auf einem µC mit wenig RAM, also 
möglichst ohne große Arrays?

Ich möchte mit einer wählbaren "Startzahl" verschiedene pseudo-zufällige 
SFHSS / THSS Hopping-Muster erzeugen. Es geht z.B. um 89 Frequenzen und 
89 Zeitschlitze.

Ich brauche also die Zahlen von 0..7920 (= 89 x 89) in pseudo-Zufälliger 
Reihenfolge.

Ich muss den Algorithmus auf einem µC implementieren und suche eine 
Lösung, die auf einem µC mit vielleicht 512B RAM auskommt.

Hat jemand einen Tipp, wie man das macht, ohne im µC ein Array mit 7921 
Elementen anzulegen?

BTW:

Matlab kann das mit randsample:
http://www.mathworks.de/de/help/stats/randsample.html

Der Ti-84 Taschenrechner hat dazu eine Funktion "randIntNoRep".

Winzigweich nennt einen entsprechenden DXImageTransform-
Filter "Random Dissolve".

Ich suche quasi einen "Random Dissolve"-Algorithmus für Bilder
mit z.B. 89 x 89 Pixeln.

PS: Die Beiden Zahlen müssen aber auch unterschiedlich sein dürfen!

Den Effekt sieht man z.B. auch bei Powerpoint unter
Folienübergang -> Auflösen.

PPS: Falls Sender und Empfänger mit unterschiedlichen Compilern oder gar 
unterschiedlichen Programmiersprachen programmiert werden müssen, komme 
ich mit srand() und rand() nicht weiter.

Eventuell könnte ich einen "Mersenne Twister" implementieren und nehme 
zwei zufällige Reihen:
* Eine für Zeilen/Frequenzen und
* eine für Spalten/Zeitschlitze
Das ist dann zwar vielleicht nicht ganz so "schön zufällig", käme aber 
mit weniger RAM aus, wenn ich also zwei kleine Arrays über einen 
"Mersenne Twister" umsortiere statt ein großes .

Sender und Empfänger müssten dann zwei identische Startwerte haben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.