Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296

Генерация случайных чисел 32 и 64 бит с 16 бит АЦП

22.03.2023, 19:15. Показов 935. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех! И так АЦП будет 16 бит может даже сокращу до 14 бит что бы шум АЦП убрать. Собственно делаю несколько выборок скажем 48 бит из него получаю 32 бит посредством выделения остатка от деления. То есть мне нужно исключить вариант дотяга до верха.
Кто что скажет на счёт алгоритмов генерации случайных чисел еще? Мне нужна хорошая случайность бы никакие там алгоритмические неслучайности невлазили.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2023, 19:15
Ответы с готовыми решениями:

Поменять местами значения бит в заданном количестве пар бит. Номера бит в парах задаются с клавиатуры
1.Разработать алгоритм ввода с клавиатуры требуемых типов данных и показать на экране их внутреннее представление в двоичной системе...

При сложении по модулю два двух чисел по 48 бит пропадает 1 бит
Здравствуйте, помогите пожалуйста. В этой строке пропадает 1 бит, т.е. должно быть 48, а их 47. R =...

Генератор случайных чисел не менее 128 бит на Delphi
Ребят подскажите как мне правильно составить код на вот такую задачу:Реализовать метод генерации случайных чисел не менее 128 бит. Вывести...

12
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
23.03.2023, 07:54
Почитайте Чехова - у него великолепный русский язык, а не Ваша каша.
Как можно так относиться к родному языку?
Ну это же черт знает что.

Добавлено через 7 минут
Цитата Сообщение от RadioHam433 Посмотреть сообщение
И так АЦП будет 16 бит
И как? Так или не так?
Цитата Сообщение от RadioHam433 Посмотреть сообщение
несколько выборок скажем 48 бит из него получаю 32 бит посредством выделения остатка от деления
Формула где?
Цитата Сообщение от RadioHam433 Посмотреть сообщение
Кто что скажет на счёт
насчет
Скажу. Хао!
Цитата Сообщение от RadioHam433 Посмотреть сообщение
Мне нужна хорошая случайность
Книжки не пробовали читать? Попробуйте.
0
Windows must die
670 / 847 / 102
Регистрация: 23.11.2021
Сообщений: 4,918
Записей в блоге: 15
23.03.2023, 09:25
Ну я вот такой алгоритм использую: забиваю четыре числа младшим битом с АЦП, а потом по xor128 вычисляю псевдослучайное число.
АЦП для этого нужно как можно более шумящий: т.е. желательно не просто, чтобы нога в воздухе висела, а и "антеннку" к ней приделать.
1
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
23.03.2023, 14:55  [ТС]
АЦП не шумит, как раз ШУМ АЦП я исключил сам АЦП 24Бит, вообще АЦП это звуковая карта, на 16 бит вроде нет шума но я хочу полностью шум АЦП исключить уже что потому что он не случайный да и зачем мне шум от других источников?

Да кстати работа в 2 канала у меня конечно же будет потому еще и пересечение каналов исключить то разрядность там оставлю не более 8 бит. Хотя там лучшее 60дБ развязка но лучше поменьше но без взаимосвязей.

Дело в том что мне нужен большой поток. Алгоритмом то куча можно по 1 биту собирать за одну выборку там всё чётко будет но это медленнее. Потому уже и использую звуковую карту 96кГц а так 192кГц будет лучше.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
"антеннку" к ней приделать.
Да шо такое несёте! Это категорически запрещено! Источник отлично защищён от всего внешнего надо было конечно и термостатирование но попробую без него пока что но АРУ на есть так что амплитуда плавать не должна спектр тоже тоже не плавает так при комнатной температуре. Но и сам генератор отлично защищён от внешних воздействий по максимуму.

xor128 вычисляю псевдослучайное число.
Нет такое не надо! Надо истинно случайное что бы оно создавалось источником а алгоритм как раз должен правильно сделать бы сам он там ничего не чудил. И уникальный сигнал с источника должен формировать уникальное число без коллизий. Но то что я написал это так что придумалось но оно ясно дело глюк сплошной.

Но собирать по 1 биту это 100500% гарантия отсутствия участия алгоритма в формировании. Но всё же хотелось хотя бы 4 бит за выборку получить так будет в 4 раза быстрее. А для потребности в небольшом количестве там как раз побитная генерация с захлётом. Но разобью амплитуду на несколько значений ниже и выше 0 по столько бит и буду собирать.

Но конечно всё сделаю автонастройку измерит ШУМ АЦП и эти значения будут далеко исключены так что ШУМ АЦП должен крайне мало влиять.

А так по биту если тут всё просто значение на момент выборки выше или ниже всё просто.

А то можно получить лажу и сделать вывод что не работает или работает не так! Так что неслучайность как это то что надо гарантированно избежать!


Цитата Сообщение от vantfiles Посмотреть сообщение
Книжки не пробовали читать? Попробуйте.
Люцифер уберёг от такого.

Цитата Сообщение от vantfiles Посмотреть сообщение
Так или не так?
Сколько надо столько и будет.
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
23.03.2023, 15:02
Eddy_Em, очень хороший вариант.
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
23.03.2023, 15:07  [ТС]
Вариант может и хороший но точно не мой потому что мне псевдослучайность не нужна!
0
Windows must die
670 / 847 / 102
Регистрация: 23.11.2021
Сообщений: 4,918
Записей в блоге: 15
23.03.2023, 15:41
Цитата Сообщение от RadioHam433 Посмотреть сообщение
Да шо такое несёте! Это категорически запрещено!
Ну-ну. Советую еще жидким гелием залить и пытаться там энтропию какую-нибудь потом найти!
Для истинно случайных чисел нужно нечто очень шумное. Нет шума — нет и энтропии!

P.S. Вспомните, как долго приходилось елозить мышкой и стучать по клавишам на компьютере, не подключенном к сети, чтобы нагенерировать более-менее энтропии и получить очередное случайное число через /dev/random. Это сейчас уже быстрей выходит (особенно если есть сеть и другие источники шума). Но таки /dev/urandom — вполне хороший вариант.
В том же исходнике, что я в качестве примера привел, случайные числа редко генерируются. Если бы мне нужно было это делать часто, я бы завел стандартный rand, который просто периодически бы реинициализировал при помощи srand от ГСЧ на АЦП.
1
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
23.03.2023, 16:13  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Ну-ну. Советую еще жидким гелием залить и пытаться там энтропию какую-нибудь потом найти!
Я говорил термостатировании источника! Но его сейчас пока что нет, но даже при 0 град (а ниже 15 температуры не будет) он ахуенно работает и разницы в спектре я чёта не заметил! А амплитуда гулять не будет вполне можно без термостатирования обойтись на 1-е время, но на 2-е время будет термостатирование 60 град но опять такие АРУ как было так и будет.
Гена очень хорошо защищён от внешнего воздействия потому на него материальное что то влиять будет крайне мало!

Это еще 1 версия источника тестовая, а сейчас источник будет куда лучше.

А вообще усилитель надо заливать гелием что бы шумел поменьше мне ж не надо шумов усилителя и АЦП!

Вообще покурите тему о подобных генераторах и что они должны быть максимально защищены что бы материальное на них влияло по минимуму!!! А не хватать всё окружающее! Это уже будет приёмник а не генератор шума!

PS мне нужен белый шум а не детектор/датчик чего то.
0
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
23.03.2023, 17:38
Такое подойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// ------------------------------------------------------------------------------
//  Mersenne Twister 64-bit random number generator.
// ------------------------------------------------------------------------------
 
MersenneTwister64RNG::MersenneTwister64RNG()
{
    _mti = NN + 1;
}
 
void MersenneTwister64RNG::init( flag_type seed )
{
    int mti;
    _mt[ 0 ] = seed;
    for( mti=1; mti<NN; mti++ ){
        _mt[ mti ] = ( 6364136223846793005ULL * (_mt[mti-1] ^ (_mt[mti-1] >> 62)) + mti );
    }
    _mti = mti;
}
 
flag_type MersenneTwister64RNG::number()
{
    static flag_type mag01[ 2 ] = { 0ULL, 0xB5026F5AA96619E9ULL };
    int i;
    flag_type x;
 
    if( _mti >= NN )
    {
        if( _mti > NN )
            return 0; // ГСЧ не был проинициализирован
 
        for( i=0; i<NN-MM; i++)
        {
            x = (_mt[i]& UM) | (_mt[i+1] & LM);
            _mt[i] = _mt[i+MM] ^ (x>>1) ^ mag01[(int)(x & 1ULL)];
        }
 
        for( ; i<NN-1; i++)
        {
            x = (_mt[i] & UM) | (_mt[i+1] & LM);
            _mt[i] = _mt[i+(MM-NN)] ^ (x>>1) ^ mag01[(int)(x&1ULL)];
        }
 
        x = (_mt[NN-1] & UM) | (_mt[0] & LM);
        _mt[NN-1] = _mt[MM-1] ^ (x>>1) ^ mag01[(int)(x&1ULL)];
 
        _mti = 0;
    }
 
    x = _mt[_mti++];
 
    x ^= (x >> 29) & 0x5555555555555555ULL;
    x ^= (x << 17) & 0x71D67FFFEDA60000ULL;
    x ^= (x << 37) & 0xFFF7EEE000000000ULL;
    x ^= (x >> 43);
 
    return x;
}
 
int MersenneTwister64RNG::number_int()
{
    return (int)(number() >> 32);
}
Добавлено через 3 минуты
Подробности тут:
https://ru.wikipedia.org/wiki/Вихрь_Мерсенна
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
23.03.2023, 18:22  [ТС]
А где у него настройки под АЦП, разрядность, дискритизацию, особенности источника? Ведь спектр он не равномерный чем выше частота тем уровень ниже это не сильно конечно всё же это отлично видно на спектре.

генерирует псевдослучайные последовательности
Точно нет!

Я же сказал что мне нужен алгоритм который не будет ничего придумывать а только собирать эти числа из сигнала!
Мне не нужны готовые алгоритмы! Мне нужно лишь сам метод. Например разбить амплитуду и генерить биты так, или наоборот по частоте использовать, скажем переходы через 0 с гистерезисом но или может спектрально. Но как вот о чём! Но по спектру врятли будет слишком много ресурсов отнимать. Может наоборот время от перехода от - до + измерять и из него генерить биты, то есть использовать не амплитуду а частоту.

Еще раз пишу что никакой алгоритм которые генерит что то псевдослучайное не применим! Алгоритм должен собирать число по битам что бы получить число с нужной разрядностью из сигнала и точка!
Алгоритм должен именно сигнал переводить в число но задача получить заданную разрядность, тупо взять амплитуду не покатит как там разрядность будет хз какая до максимума сигнал доходить не может и собрать более длинные числа надо.

Я как бы высказал несколько методов которые отлично работают как бы. Вопрос о том может ли быть что то лучше при условии что надо максимальную производительность.
0
Windows must die
670 / 847 / 102
Регистрация: 23.11.2021
Сообщений: 4,918
Записей в блоге: 15
23.03.2023, 18:44
Чувак, даже супер-пупер алгоритмы шифрования не парясь используют псевдослучайные числа. "Почти" случайные числа - лишь для инициализации srand.
И все твои "фи" совершенно противоречат изложенному в вопросе. Ты вообще ничего не сказал ни о том, что у тебя за железяка, ни о природе входящего сигнала. Если там реально звук, т.е. псевдослучайная последовательность, то можно любой алгоритм взять, где берутся последовательно несколько выборок и тем или иным образом "перемешиваются". Два варианта тебе уже дали. Есть еще уйма.
Если входящий сигнал практически лишен шума, а максимальная частота значительно меньше частоты семплирования, то придется набирать "случайное число" очень долго! И исключительно из 1-2 младших разрядов. Допустим, у тебя предельная входная частота - 100кГц. АЦП 14 разрядов. Сэмплируешь на мегагерце. В худшем случае ты попадешь симметрично вершине - сможешь лишь самый младший разряд использовать. В случае чуть получше (его и будем рассматривать) у тебя будет аж 7-8 младших разрядов. Т.о., если брать последовательно выборки по 8 разрядов (но с запасом: скажем, для uint16_t брать минимум три штуки), а потом их сдвигами и XOR'ами перемешать, вполне себе "почти случайное" число получим. "Истинно случайное" число ты никогда не получишь, используя математику. Да и вообще, как говорит квантовая физика, стоит экспериментатору влезть в ход эксперимента, как всякая случайность будет потеряна (и те же электроны перестанут дифрагировать через щель, ведя себя как будто частицы).

Короче говоря, просто посчитай по своей конкретной задаче, что у тебя там выйдет. Ну и почитай про алгоритмы получения "почти" случайных чисел из набора псевдослучайных.
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
23.03.2023, 22:26  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Чувак, даже супер-пупер алгоритмы шифрования не парясь используют псевдослучайные числа.
Это не шифрование! Для шифрования я такое не использую!

тоит экспериментатору влезть в ход эксперимента, как всякая случайность будет потеряна (и те же электроны перестанут дифрагировать через щель, ведя себя как будто частицы).
Вот как и хорошо что бы это случилось! Если случилось то я бы тут не писал! Но пока увы.

Ты вообще ничего не сказал ни о том, что у тебя за железяка
Я же сказал АЦП 24бит 2 канала 92кГц, но я использую 16бит что бы снизить шум самого АЦП. 2 канала соответственно в 2 раза больше данных. Один хрен на 24 бит там только лишние шумы хватить а мне они не нужны, у меня нет задачи хватить шумы различные.

Цитата Сообщение от Eddy_Em Посмотреть сообщение
Сэмплируешь на мегагерце.
Ты там ничё не сделаешь с какими параметрами захватил звук с такими и обрабатывать а выше частоты дискритизации никакая звуковуха не даст захватывать да и что это за изврат! АЦП работает как АЦП он должен только сигнал цифровать что оно и делает. А дальше всё сделать из сигнала.
Вот спектр не совсем правильного гены он хорошо верх заваливает! Но это и не есть гена это просто модуль ГБШППИ для лабораторного усилителя, и модуль не экранированный и вот он 50Гц зацепил!!!!!!

"Истинно случайное" число ты никогда не получишь, используя математику.
Вот потому я не использую математику! А использую именно оцифровку сигнала!

Переименовать в wav как wav не позволило загрузить.
Вложения
Тип файла: rar 1.rar (1.13 Мб, 0 просмотров)
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
04.04.2023, 22:57  [ТС]
Кому интересно собственно абсолютная генерация чисто из сигнала без математики получается естественное распределение то есть такой горб миним и макс значения самые редкие но и самые частые это что ближе к середине. Но это не отличительная черта я нашёл кажется в сигнале признаки естественного.

Вот если извлекать младший байты посредством MOD там распределение намного ровнее прямо ровно можно сказать всё.
Так же работаю над алгоритмом что бы чётко отличить шум от транзисторого источника от программного генератора но кажется есть отличия чёткие и по мне заметные надо только дописать алгоритм. От газоразрядного источника шум немного отличается от транзистора в режиме обратного пробоя, а от стабилитрона вообще чёта невероятно я сам не понял попробую другие и прямое включение диода еще.
Если конечно получится чётко и качественно алгоритмически отличать от естественный от искусственного то будет вообще класс тогда получится сразу "заблокировать" любые искусственные источники.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2023, 22:57
Помогаю со студенческими работами здесь

Работа с АЦП 16 бит ADC161S626
Вот код, который Я использовал для работы с ацп. CS_1 = 0; // read the MSB using SPI ADC_t=(unsykned) spi(0)&lt;&lt;8; // read...

Поведение дочерних окон 32 бит MDI приложения под Windows 7 64 бит
Все было хорошо с приложением под 32 бит Windows XP в течение 2-х лет. После установки программы на Windows 7 64 бит домашняя расширенная...

Поделить строку на блоки по 12 бит и заменить в каждом блоке случайный бит
На входе есть строка типа string, каждый символ нужно перевести в последовательность битов, и эту последовательность разделить на блоки по...

Самые часто встречающиеся 24 символа кодировать по 5 бит. А все остальные по 10 бит
Требуется: самые часто встречающиеся 24 символа кодировать по 5 бит. А все остальные по 10 бит. Дешифровка тоже нужна Помогите...

Поменять местами значения бит в заданном количестве пар бит
есть задание нужно поменять местами значения бит в заданном количестве пар бит. Номера бит в парах задаются с клавиатуры. используя shot...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru