Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Эксперт функциональных языков программированияЭксперт по математике/физике
4311 / 2103 / 431
Регистрация: 19.07.2009
Сообщений: 3,189
Записей в блоге: 24

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

21.09.2016, 20:17. Показов 3539. Ответов 6

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

По-другому, сгенерировать случайную точку на (n-1)-мерной сфере в n-мерном пр-ве.

У меня была мысль рассмотреть n(n-1)/2 плоскостей, повернуть на случайный угол по каждой плоскости в отдельности матрицей с блоком
-sin(a) cos(a)
cos(a) sin(a)
и единицами на диагонали,
затем перемножить матрицы, получив случайную матрицу поворота.
По-идее, любая строка или столбец является вектором со случайным направлением.

Однако, реализация не работает (возможно, из-за моего косяка в реализации) при n>2.
Да и сложность n^2 генераций сл. чисел и перемножений матриц напрягает.

Что посоветуете?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.09.2016, 20:17
Ответы с готовыми решениями:

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

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

Генерация "случайного" числа
Приветствую всех! Подскажите алгоритм для генерации последовательностей "случайных" чисел в диапазоне от 4352 до 65535. Алгоритм...

6
 Аватар для ProgJ
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
22.09.2016, 12:10
Лучший ответ Сообщение было отмечено Mysterious Light как решение

Решение

А просто сгенерировать произвольную точку (вектор) и нормировать, чтоб попасть на сферу, не подходит?
1
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.09.2016, 13:10
Цитата Сообщение от Mysterious Light Посмотреть сообщение
По-другому, сгенерировать случайную точку на (n-1)-мерной сфере в n-мерном пр-ве.
Сгенерируйте точку с координатами, распределенными по нормальному закону. Затем пронормируйте вектор, получите равномерное распределение по поверхности сферы.
Цитата Сообщение от ProgJ Посмотреть сообщение
А просто сгенерировать произвольную точку (вектор) и нормировать, чтоб попасть на сферу, не подходит?
А как вы "просто" сгенерируете точку? Если вы имеет ввиду, что координаты будут случайными и с равномерным распределением, то вы фактически генерируете куб точек. Но проекция куба на сферу не будет равномерной. Там где "углы" куба точек будет больше, чем посредине граней.
0
 Аватар для ProgJ
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
22.09.2016, 15:13
Цитата Сообщение от Storm23 Посмотреть сообщение
Но проекция куба на сферу не будет равномерной
Не будет. Но ТС этого не требовалось, не все умеют читать мысли

Добавлено через 4 минуты
Цитата Сообщение от Storm23 Посмотреть сообщение
Сгенерируйте точку с координатами, распределенными по нормальному закону... получите равномерное распределение по поверхности сферы.
Как это можно доказать? Есть какая-нибудь ссылка?
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4311 / 2103 / 431
Регистрация: 19.07.2009
Сообщений: 3,189
Записей в блоге: 24
22.09.2016, 18:02  [ТС]
Цитата Сообщение от ProgJ Посмотреть сообщение
Но ТС этого не требовалось, не все умеют читать мысли
ТС это требовалось, равномерность — дефолтное распределение.
Но Вы мне всё равно подсказали, как сделать: генерировать случайную точку в кубе с ребром 2 до тех пор, пока не попадём в единичный шар, после чего нормировать.
Цитата Сообщение от ProgJ Посмотреть сообщение
Как это можно доказать? Есть какая-нибудь ссылка?
Мне тоже интересно.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.09.2016, 19:00
Лучший ответ Сообщение было отмечено insideone как решение

Решение

Цитата Сообщение от Mysterious Light Посмотреть сообщение
Мне тоже интересно.
http://www-alg.ist.hokudai.ac.... sphere.pdf
Глава 4.
3
 Аватар для ProgJ
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
22.09.2016, 20:30
Mysterious Light, ваш алгоритм с отсечением внешности шара там тоже есть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2016, 20:30
Помогаю со студенческими работами здесь

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

Генерация случайного ID
Всем доброго времени суток. В общем вопрос такой как сгенерировать случайный ID . Вида 123456a,то есть шесть цифр и буква в конце.А после...

Рандомная генерация уровня. Смена направления генерации объектов
Всем привет. Не могу сменить направление генерации объектов. Требуется после 15 созданных объектов сменить направление на (-1, -1). Кол-во...

генерация случайного числа
Это часть кода игры питон у Зубкова. ; генерация случайного числа ; возвращает число в АХ, модифицирует DX random: mov ...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru