Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712

Генерация "случайного" числа

12.05.2016, 16:27. Показов 1537. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую всех! Подскажите алгоритм для генерации последовательностей "случайных" чисел в диапазоне от 4352 до 65535. Алгоритм должен иметь входные данные, чтобы, в зависимости от них, он генерировал разные последовательности.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.05.2016, 16:27
Ответы с готовыми решениями:

Генерация действительно случайного числа
Всем привет. Как известно, алгоритм рандома работает не просто так, а числа выходят не случайно, а по формуле. Читал, что хороший...

Генерация случайного направления
Не могу придумать алгоритм генерации случайного направления в рамках задачи генерации вращательно-симметричного случайного вектора в...

Генерация случайного сильно связанного орграфа
Здравствуйте. Необходимо, случайным образом, генерировать сильно связный орграф с заданным количеством вершин и ребер. Обязательной...

9
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
12.05.2016, 16:40
Стандартная функция языка не подходит?
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
12.05.2016, 16:51  [ТС]
Не подходит. Пишу программу для микроконтроллера и я должен знать какое следующее "случайное" число будет сгенерировано в микроконтроллере.
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
12.05.2016, 17:38
Цитата Сообщение от d7d1c Посмотреть сообщение
я должен знать какое следующее "случайное" число будет
Искать “Детерменированый ГСЧ” или “Генератор псевдослучайных чисел” вроде в ассемблере есть команда которая детерминирует генератор.
Скорей всего у вас в “стандартной функции” ГСЧ прописано менять ключ генератора в самой либе.
Детерминированный генератор случайных чисел с привязкой по ключу
Цитата Сообщение от Shamil1 Посмотреть сообщение
если инициализировать ГСЧ одним и тем же числом, то получишь ту же последовательность.
В качестве простейшего генератора можно взять например параметрическую функцию.
Простая формула шума
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
12.05.2016, 18:32
Пример простейшего генератора псевдослучайных чисел
может быть таким
СЧn+1 = {3,1415926535897932*СЧn + 1,9876543210987654}
где
{x} - дробная часть числа х
СЧn+1 - последующее случайное число
СЧn - предыдущее случайное число
Самое первое случайное число вы задаете сами
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
13.05.2016, 08:05  [ТС]
Спасибо за помощь. Однако решения я еще не нашел, поэтому конкретизирую задачу. Требуется алгоритм генератора псевдослучайных целых чисел для генерации чисел от 4352 до 65535 включительно. У алгоритма должен быть входной параметр (целое число), в зависимости от которого генерируется следующее число. Очень желательно, чтобы реализация алгоритма работала только с целыми числами или остатками от деления целых чисел (обусловлено тем, что программа пишется на ассемблере).
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
13.05.2016, 09:56
Лучший ответ Сообщение было отмечено d7d1cd как решение

Решение

Ищите "Линейный конгруэнтный ГПСЧ".

В простейшем случае:
xn+1 = (axn + c) mod 61183 + 4352

И есть некоторые рекомендации по тому, как лучше выбирать a и c
0
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
13.05.2016, 10:11
Цитата Сообщение от d7d1c Посмотреть сообщение
генератора псевдослучайных целых чисел
Один и тот же закон округления.
Цитата Сообщение от d7d1c Посмотреть сообщение
от 4352 до 65535 включительно.
Пропорция.

Уверен вопрос генераторов с кучей примеров логики и кода давно и детально описан в любой нормальной книге обучающей ассемблеру для МКи оптимизирован для изучаемой архитектуры. Когда то читал AVR =)).
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
13.05.2016, 14:47  [ТС]
Shamil1, спасибо за подсказку. Буду подбирать значения а и с.

Добавлено через 19 минут
Начал думать над значениями а и с и сразу возник вопрос. Возможно ли подобрать эти значения так, чтобы размер генерируемой уникальной последовательности не зависел от начального значения Xn? Или, по крайней мере, чтобы размер этой уникальной последовательности был не менее 200.
0
Модератор
Эксперт функциональных языков программирования
3134 / 2281 / 469
Регистрация: 26.03.2015
Сообщений: 8,877
13.05.2016, 15:24
Цитата Сообщение от d7d1c Посмотреть сообщение
Начал думать над значениями а и с и сразу возник вопрос. Возможно ли подобрать эти значения так, чтобы размер генерируемой уникальной последовательности не зависел от начального значения Xn? Или, по крайней мере, чтобы размер этой уникальной последовательности был не менее 200.
Да.
Вбиваете в гугле "Линейный конгруэнтный ГПСЧ". Открываете первую ссылку (на статью в вики). И читаете, как правильно выбрать эти числа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2016, 15:24
Помогаю со студенческими работами здесь

Генерация случайного числа, максимально случайного
Добрый день, задался вопросом как получить случайное число, но не псевдо-случайное по идее функции rand() и srand(time(NULL))...

Генерация случайного числа
Проблемма такова: в программе необходимо получить несколько чисел, от 1 до 255 (или max будет другим -- пока не важно). Стандартные...

Генерация случайного числа
Добрый вечер, уважаемые форумчане. Подскажите, пожалуйста, правильно ли я понимаю конструкцию - ((int) (Math.random() * 100)) ...

Генерация случайного числа
Мне нужно чтобы переменная T каждый раз генерировалась перед тем как клиент поступит в очередь и в зависимости от ее значения, клиент...

Генерация случайного числа
Необходимо чтобы случайное число, кратное 50. Мой код по получению рандомного числа: Random random = new Random(); int i =...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru