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

 
 
> Псевдослучайный генератор чисел, Нужен несложный алгоритм
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
Ответов
ae_
сообщение Nov 23 2008, 13:30
Сообщение #2


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(Juras Pr. @ Nov 23 2008, 08:27) *
...
Важно, чтобы числа не повторялись 2 раза вподряд.

Можно сделать простой генератор ПСП по формуле x=(a*x+b)mod c
Вот пример для a=5, b=77, c=256
Код
.equ  rnd=R15
.equ  tmp=R16

mov  tmp, rnd
lsl  rnd
lsl  rnd
add  rnd, tmp
ldi  tmp, 77
add  rnd, tmp
mov  tmp, rnd


Так как нужно число до 32, то оставляем только 5 бит
Код
andi tmp, 0b00011111

Двух подряд одинаковых чисел точно не будет, но длина последовательности будет только 32. Начиная с 33 позиции серия будет повторятся.
Если взять старшие пять бит:
Код
lsr  tmp
lsr  tmp
lsr  tmp

То последовательность будет более случайная (длина серии 256), но будут встречаться подряд идущие одинаковые числа.
Go to the top of the page
 
+Quote Post
777777
сообщение Nov 23 2008, 13:43
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(ae_ @ Nov 23 2008, 16:30) *
Двух подряд одинаковых чисел точно не будет

Случайные - на значит разные! В случайной последовательности идущие подряд одинаковые числа не только могут, но и должны встречаться с вероятностью, вычисляемой теоретически.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 23 2008, 16:31
Сообщение #4


Гуру
******

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



Цитата(777777 @ Nov 23 2008, 13:43) *
В случайной последовательности идущие подряд одинаковые числа не только могут, но и должны встречаться с вероятностью, вычисляемой теоретически.

Да, но для _псевдо_случайной последовательности это будет означать, что ряд закончился и далее начнется сначала (или откуда-то со середины).
Go to the top of the page
 
+Quote Post
Petka
сообщение Nov 23 2008, 16:54
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Огурцов @ Nov 23 2008, 19:31) *
Да, но для _псевдо_случайной последовательности это будет означать, что ряд закончился и далее начнется сначала (или откуда-то со середины).

Заблуждение.
Обычно генератор псевдослучайной последовательности у себя в потрохах имеет static переменную, про которую ваше утверждение верно (если значение этой переменной со временем повторится, то и значения на выходе генератора тоже начнут повторяться). Однако опять-таки обычно на выход генератора эта переменная выводится не "как есть" а через некоторый "перемалыватель". В итоге генератор ПСП может выдавать одинаковые подряд идущие значения, и это вовсе не обозначает что "последовательность зациклилась". Могу порекомендовать воспользоваться гуглом. Например весьма толково описано тут: http://algolist.manual.ru/maths/generator/
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Nov 23 2008, 21:47
Сообщение #6


Гуру
******

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



Цитата(Petka @ Nov 23 2008, 16:54) *
Заблуждение.

Если абстрактно, то да. Но я опять же про этот самый регистр с парой отводов на xor, а для него однозначно не заблуждение.


Цитата(SKov @ Nov 23 2008, 18:58) *
Никто физически ничего не проверяет. Есть такая наука, называется теория конечных полей.

Аха, еще есть такая наука математика. Только вот далеко не все в ней сильны...как папа у Васи. Большинству проще и быстрее, до определенных границ, прогнать алгоритм брутфорсом нежели пытаться въехать в несколько специализированных книжек на конкретную тему.
Go to the top of the page
 
+Quote Post
SKov
сообщение Nov 24 2008, 08:45
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 812
Регистрация: 22-01-05
Из: SPb
Пользователь №: 2 119



Цитата(Огурцов @ Nov 24 2008, 00:47) *
Аха, еще есть такая наука математика. Только вот далеко не все в ней сильны...как папа у Васи.

Так для этого как раз и существуют такие форумы как этот.
Каждый силен в своей области. А вместе мы составляем коллективный разум очень широкого диапазона знаний. Большую теорему Ферма вам тут, наверное, не раскажут, как доказывать,
а что-нибудь чуть по-проще - легко.
Спрашивайте - всегда помогут. smile.gif
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
- - Juras Pr.   Я попробовал сдвигать влево один байт, перед сдвиг...   Nov 22 2008, 21:00
|- - Огурцов   Когда-то экспериментировал, только проверьте: длин...   Nov 23 2008, 00:20
|- - 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
|- - 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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