Как генерировать случайные числа с помощью файла .wav?

947
zeldarulez

Я хочу генерировать случайные числа в определенном диапазоне (от 1 до 26), используя файл .wav только со статическим шумом.

Результаты должны быть повторяемыми.

Есть ли какая-либо служба / программа / метод для достижения этой цели в Windows 7?

5
Что вы хотите сделать со случайными числами? Ответ на этот вопрос влияет на то, какой метод будет лучшим для этого. jmetz 11 лет назад 1
Прежде всего, вы знаете какие-нибудь языки программирования? Я предполагаю, что нет, но это не меняет того факта, что случайные генерируемые числа, которые повторяются, вовсе не случайны. Тем не менее, вы можете рассмотреть возможность хэширования файла с MD5 и использовать хеш в качестве начального числа. Это гарантирует, что семя уникально для того звука, который может быть воспроизведен, может воспроизводить предсказуемую последовательность чисел. Тем не менее, это не случайно. anber 10 лет назад 0
@anber Да, у меня есть опыт работы с парой языков программирования. Из того, что вы написали, я буду иметь это в виду. Спасибо! ;) zeldarulez 10 лет назад 0

3 ответа на вопрос

6
jmetz

Try Python's scipy module,

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 

The data is now a vector and can be saved or used for further processing etc.

If for example you just want to save the output as a csv (comma separated values) file, you could then use

import csv fout = open('output.csv', 'w') wrt = csv.writer(fout) wrt.writerow(data) fout.close() 
я, к сожалению, не программирую / знаю Python. Как я могу использовать этот фрагмент кода? zeldarulez 11 лет назад 0
@zeldarulez: Пока вы можете мыслить логически, Python является одним из самых простых языков программирования для изучения. Ignacio Vazquez-Abrams 11 лет назад 3
@zeldarulez - что ты хочешь делать со случайными числами? jmetz 11 лет назад 0
Я хотел бы использовать случайные числа для создания одноразовой клавиши. Я знаю о [random.org] (http://www.random.org), но я хочу использовать метод, чтобы создать его сам zeldarulez 11 лет назад 0
@ IgnacioVazquez-Abrams изучать новый язык будет хорошо;) zeldarulez 11 лет назад 0
0
Ignacio Vazquez-Abrams

If the file is PCM-encoded then you can use Python's wave module to read the samples in the file, and then fold the values into the range.

Модуль `wave` считывает данные в виде строки - я бы рекомендовал использовать вместо этого` scipy.io.wavfile`, как я написал в своем ответе, - это делает данные намного более управляемыми для последующего масштабирования. jmetz 11 лет назад 4
0
dovla091

Я создал настоящий файл случайных чисел, используя радиоволны AM или то, что обычно называется белым шумом. Я сделал это в Linux, поэтому, если вы хотите, выполните следующие действия. 1. Используйте свое радио, которое имеет AM. 2. поместите частоту где-нибудь между радиоканалами - вы должны получить белый шум от радиоволн и других магнитных помех ... 3. использовать linux distro (на основе debian / redhat) - я использовал Ubuntu. 4. Установите приложение «sox» (связка), в котором есть небольшое приложение «rec», которое вы будете использовать 5. после того, как вы установили sox, поместите микрофон на динамики, чтобы они могли записывать «белый шум», и используйте команду:

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

вкратце: -c 1 (вы используете один канал) -r 8000 (сэмплирование 8000 Гц) -t wav (форматировать файл как wav) -e знаковое целое число (и читает 16 бит одновременно) randomWAVfile - (файл имя - по вашим личным предпочтениям)

У вас будет файл со случайным шумом, который «форматируется» как wav-файл (он содержит wav-заголовок из 14 битов - если я не ошибаюсь)

чтобы вырезать заголовок и «удалить» потенциальные дубликаты, используйте эту программу, написанную на C Риком Ван Рейнном

Это не большая проблема, но имейте в виду, что кастинги в этой программе неправильные и ваш gcc начнет жаловаться

Ссылка на исходный код : исходный код Openfortress

и нажав файл вниз через программу:

cat randomWAVfile | ./noise-filter > randomBits 

Вы получите файл TRNG.

Я полагался на это, используя эту ссылку. единственное, что парень, создавший оригинальное руководство, использовал древние версии linux, работающие с OSS (open sound sys), а не alsa.

Исходное сообщение: Оригинальная ссылка Openfortress

ура

Пожалуйста, внимательно прочитайте вопрос. Ваш ответ ** не ** отвечает на оригинальный вопрос. ОП сказал: «Результаты должны быть повторяемыми». DavidPostill 8 лет назад 0
Извините, Дэвид, я что-то просматривал, и у меня нет красного вопроса. Мои извинения. dovla091 8 лет назад 0