Wie generiert man Zufallszahlen mit einer .wav-Datei?

5

Ich möchte Zufallszahlen in einem bestimmten Bereich (1 bis 26) mithilfe einer WAV-Datei mit nur statischem Rauschen generieren.

Die Ergebnisse müssen wiederholbar sein.

Gibt es einen Dienst / ein Programm / eine Methode, um dies in Windows 7 zu erreichen?

zeldarulez
quelle
1
Was willst du mit den Zufallszahlen machen? Die Beantwortung dieser Frage hat Einfluss darauf, welche Methode hierfür am besten geeignet ist.
jmetz
Kennen Sie überhaupt Programmiersprachen? Ich nehme nicht an, aber das ändert nichts an der Tatsache, dass zufallsgenerierte Zahlen, die wiederholbar sind, überhaupt nicht zufällig sind. Sie können jedoch in Betracht ziehen, die Datei mit MD5 zu haschen und den Hash als Startwert zu verwenden. Dies stellt sicher, dass der Samen für diesen Ton eindeutig ist und eine vorhersehbare Folge von Zahlen reproduzieren kann. Dies ist jedoch NICHT zufällig.
Bernstein
@anber Ja, ich habe Erfahrung mit einigen Programmiersprachen. Nach dem, was Sie geschrieben haben, werde ich das im Hinterkopf behalten. Vielen Dank! ;)
Zeldarulez

Antworten:

6

Probieren Sie das Python- scipyModul aus .

import scipy.io.wavfile as sio

data = sio.read(FILENAME)
data = data[1].astype('float')
data -= data.min()
data *= 25.0*data.max()
data += 1

Die Daten sind jetzt ein Vektor und können gespeichert oder für die weitere Verarbeitung usw. verwendet werden.

Wenn Sie beispielsweise die Ausgabe nur als CSV-Datei (Comma Separated Values) speichern möchten, können Sie diese verwenden

import csv
fout = open('output.csv', 'w')
wrt = csv.writer(fout)
wrt.writerow(data)
fout.close()
jmetz
quelle
Ich programmiere / kenne Python leider nicht. Wie könnte ich dieses Code-Snippit verwenden?
Zeldarulez
3
@zeldarulez: Solange Sie logisch denken können, ist Python eine der am einfachsten zu erlernenden Programmiersprachen.
Ignacio Vazquez-Abrams
@zeldarulez - was willst du mit den Zufallszahlen machen?
jmetz
Ich möchte die Zufallszahlen verwenden, um eine einmalige Pad-Taste zu erstellen. Ich kenne random.org , aber ich möchte eine Methode verwenden, um es selbst zu erstellen
zeldarulez
@ IgnacioVazquez-Abrams das Erlernen einer neuen Sprache wird in
Ordnung
0

Wenn die Datei PCM-codiert ist, können Sie mit dem Python- waveModul die Beispiele in der Datei lesen und die Werte dann in den Bereich falten.

Ignacio Vazquez-Abrams
quelle
4
Das waveModul liest die Daten als Zeichenfolge - ich würde empfehlen, sie scipy.io.wavfilestattdessen zu verwenden, wie ich in meiner Antwort angegeben habe - und macht sie für die nachfolgende Neuskalierung viel einfacher zu verwalten.
jmetz
0

Ich habe eine echte Zufallszahldatei mit AM-Radiowellen oder dem, was im Volksmund als weißes Rauschen bezeichnet wird, erstellt. Ich habe es unter Linux gemacht. Wenn Sie das wollen, gehen Sie folgendermaßen vor.

  1. Verwenden Sie Ihr Radio mit AM.
  2. Stellen Sie die Frequenz irgendwo zwischen Funkkanälen ein - Sie sollten weißes Rauschen durch Funkwellen und andere magnetische Störungen erhalten.
  3. Benutze Linux Distribution (Debian / RedHat basiert) - Ich habe Ubuntu benutzt.
  4. Installieren Sie die Anwendung "sox" (Bundle), die eine kleine App namens "rec" enthält, die Sie verwenden werden.
  5. Nachdem Sie sox installiert haben, platzieren Sie Ihr Mikrofon an den Lautsprechern, damit diese "weißes Rauschen" aufnehmen und diesen Befehl verwenden können:

    rec -c 1 -r 8000 -t wav -e signed-integer randomWAVfile
    

Zusamenfassend:

  • -c 1 (Sie verwenden einen Kanal)
  • -r 8000 (Abtastung von 8000 Hz)
  • -t wav (Datei als wav formatieren)
  • -e vorzeichenbehaftete Ganzzahl (und liest gleichzeitig 16 Bit)
  • randomWAVfile (Dateiname - nach Ihren persönlichen Vorlieben)

Sie werden eine Datei mit zufälligem Rauschen haben, die als WAV-Datei "formatiert" ist (sie enthält einen WAV-Header von 14 Bit - wenn ich mich nicht irre).

Verwenden Sie dieses in C von Rick Van Reinn geschriebene Programm, um den Header zu verkleinern und potenzielle Duplikate zu "entfernen".

Es ist kein großes Problem, aber beachten Sie, dass die Castings in diesem Programm nicht korrekt sind und Ihr GCC anfängt, sich zu beschweren.

Quellcode-Link: Openfortress-Quellcode

Durch Drücken der Datei durch das Programm:

cat randomWAVfile | ./noise-filter > randomBits

Sie erhalten die TRNG-Datei.

Das habe ich über diesen Link erfahren. Das einzige, was der Typ, der das ursprüngliche Tutorial erstellt hat, war, alte Linux-Versionen zu verwenden, die mit OSS (Open Sound Sys) und nicht mit Alsa betrieben wurden.

Ursprünglicher Beitrag: Openfortress original link

dovla091
quelle
Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage. OP sagte: "Die Ergebnisse müssen wiederholbar sein."
DavidPostill
Tut mir leid, David, ich habe etwas durchsucht und meine Frage nicht sorgfältig beantwortet. Meine Entschuldigung.
Dovla091