реклама на сайте
подробности

 
 
> Псевдослучайный генератор чисел, Нужен несложный алгоритм
Juras Pr.
сообщение Nov 22 2008, 18:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111



Подскажите несложный алгоритм, генерирующий значения от 0 до 31 по псевдослучайному закону. Сверхравномерность распределения значений мне не нужна, а нужно, чтобы было хоть подобие случайности. Работаю в основном на ассемблере.

Сообщение отредактировал Juras Pr. - Nov 22 2008, 18:06
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Juras Pr.
сообщение Nov 22 2008, 21:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 26-04-08
Из: BY/MN
Пользователь №: 37 111



Я попробовал сдвигать влево один байт, перед сдвигом беру 3-й и 6-й биты (с другими битами получается хуже), применяю к ним XOR и результат заношу после сдвига в 0-й бит байта. А в результат беру 5 младших битов. Перед запуском в этот регистр (байт) было занесено значение $55.
После прогона алгоритма 3 раза (по 32 каждый) получилась такая диграмма распределения.
Прикрепленное изображение

При увеличении числа прогонов диаграмма почти выравнивается.
Да, пользователь будет иногда нажимать кнопку, а таймер работает с высокой частотой, поэтому его я попробую задействовать. Этот алгоритм я буду писать на ассемблере.

Сообщение отредактировал Juras Pr. - Nov 22 2008, 21:03
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 23 2008, 00:20
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Когда-то экспериментировал, только проверьте: длинну регистра нужно брать m = 2^n - 1, один бит крайний, второй может быть перед ним, либо самый первый, длиннна последовательности 2^m - 1, регистр инициализировать любым числом, отличным от нуля. Имхо, точно работает для 7, 15, 31 бит.

Сообщение отредактировал Огурцов - Nov 23 2008, 00:22
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Juras Pr.   Псевдослучайный генератор чисел   Nov 22 2008, 18:05
- - 777777   Цитата(Juras Pr. @ Nov 22 2008, 21:05) По...   Nov 22 2008, 18:45
- - Juras Pr.   Спасибо, уже что-то есть. Идея понятна. А что если...   Nov 22 2008, 18:54
|- - 777777   Цитата(Juras Pr. @ Nov 22 2008, 21:54) Сп...   Nov 22 2008, 19:11
- - Tiny   Я делал так: В таймере, который выполняет свою фун...   Nov 22 2008, 19:08
- - domowoj   Можно сделать програмный сдвиговый регистр с обрат...   Nov 22 2008, 19:13
|- - SKov   Цитата(Огурцов @ Nov 23 2008, 03:20) толь...   Nov 23 2008, 12:05
|- - Огурцов   Цитата(SKov @ Nov 23 2008, 12:05) Длину р...   Nov 23 2008, 13:22
|- - SKov   Цитата(Огурцов @ Nov 23 2008, 16:22) Коне...   Nov 23 2008, 18:58
- - Juras Pr.   Ближе всего мне 7-и битный вариант получается, буд...   Nov 23 2008, 00:27
- - ae_   Цитата(Juras Pr. @ Nov 23 2008, 08:27) .....   Nov 23 2008, 13:30
|- - 777777   Цитата(ae_ @ Nov 23 2008, 16:30) Двух под...   Nov 23 2008, 13:43
||- - Огурцов   Цитата(777777 @ Nov 23 2008, 13:43) В слу...   Nov 23 2008, 16:31
||- - Petka   Цитата(Огурцов @ Nov 23 2008, 19:31) Да, ...   Nov 23 2008, 16:54
||- - Огурцов   Цитата(Petka @ Nov 23 2008, 16:54) Заблуж...   Nov 23 2008, 21:47
||- - SKov   Цитата(Огурцов @ Nov 24 2008, 00:47) Аха,...   Nov 24 2008, 08:45
|- - Juras Pr.   Цитата(ae_ @ Nov 23 2008, 15:30) Если взя...   Nov 23 2008, 13:43
- - spf   Посмотри, может что-то из этого поможет http://vrt...   Nov 23 2008, 16:05
|- - galjoen   2 Juras Pr. А почему-бы просто не вычислять CRC от...   Nov 23 2008, 18:16
- - ARV   предлагаю чрезвычайно простой, но в определенных с...   Nov 23 2008, 17:18
|- - Juras Pr.   Цитата(ARV @ Nov 23 2008, 19:18) ...испол...   Nov 23 2008, 18:09
- - andran25   Вычислял когда-то. Вот тут можно взять: http://an...   Nov 23 2008, 20:12
- - Juras Pr.   andran25, спасибо, а также всем, кто подсказывал ...   Nov 23 2008, 22:24


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016