Форум программистов, компьютерный форум CyberForum.ru

Метод случайного поиска - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 56, средняя оценка - 4.88
Katyaara
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
19.04.2010, 13:01     Метод случайного поиска #1
в чем заключается метод? какой шаг и т д поясните плиз.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,979
19.04.2010, 13:57     Метод случайного поиска #2
Цитата Сообщение от Katyaara Посмотреть сообщение
в чем заключается метод? какой шаг и т д поясните плиз.
имхо нужно гуглить.
ЗЫ: о таком методе поиска первый раз слышу.
Katyaara
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
19.04.2010, 14:26  [ТС]     Метод случайного поиска #3
я гуглил, толком ничего несказано ни шаг ничего(
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.04.2010, 14:38     Метод случайного поиска #4
вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main(){
    const int size = 10;
    int arr[size];
    for ( int i = 0; i < size; ++i )
        std::cout << ( arr[i] = i + 1 ) << " ";
    std::cout << std::endl;
    int find;
    std::cout << "Enter value between 1 and 10: ";
    std::cin >> find;
    if ( find < 1 || find > 10 )
        exit(1);
    int pos;
    srand(time(NULL));
    while ( arr[pos = rand() % size] != find )
        ;
    std::cout << "Value " << find << " is at index " << pos << " in array starts by zero." << std::endl;
 
    exit(0);
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
19.04.2010, 17:26     Метод случайного поиска #5
Цитата Сообщение от easybudda Посмотреть сообщение
while ( arr[pos = rand() % size] != find )
;
вообщем сам алгоритм это 1 строчка ?)
C++
1
while ( arr[pos = rand() % size] != find )
а где примняется такой?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.04.2010, 17:44     Метод случайного поиска #6
Цитата Сообщение от PointsEqual Посмотреть сообщение
вообщем сам алгоритм это 1 строчка ?)
Угу

Цитата Сообщение от PointsEqual Посмотреть сообщение
а где примняется такой?
Без понятия, я про такое первый раз слышу... Да и смысла в нём в таком виде не много - теоретически может на всегда задуматься. Может в этом и был бы смысл при бинарном поиске, если очередной участок делить не пополам, а как прийдётся. А так скорее на шутку похоже...
Katyaara
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
21.04.2010, 18:25  [ТС]     Метод случайного поиска #7
короче как я понял никто об этом ничего не знает?
wmkross
 Аватар для wmkross
2 / 2 / 0
Регистрация: 24.09.2008
Сообщений: 10
21.04.2010, 18:40     Метод случайного поиска #8
подобные методы могут применяться в показе случайной информации!!! Например: когда запускаешь тот же MS VS сразу появляется сообщение-рекомендация , но если ты сразу выключишь и включишь заново среду то енто сообщение-рекомендация уже будет другой. Ну и развивай мысль где енто может еще использоваться!
Katyaara
0 / 0 / 0
Регистрация: 26.03.2010
Сообщений: 27
21.04.2010, 21:55  [ТС]     Метод случайного поиска #9
ооооо это легко сказать мне неадо этим методом уравнение решить решить)) вот тут я бессилен
positron
22 / 7 / 1
Регистрация: 22.04.2010
Сообщений: 105
22.04.2010, 21:36     Метод случайного поиска #10
Метод экспериментального поиска экстремума функций многих переменных. Основная идея метода заключается в том, что точку каждого пробного опыта для изучения поверхности отклика выбирают случайным образом. Несмотря на произвольность выбора пробной точки, алгоритм случайного поиска позволяет последовательно приближаться к экстремальной области.

То есть если в методе деления отрезка пополам, мы берем точки для сравнения, откладывая равные отрезки от середины отрезка, то здесь, возможно, точки берутся рандомно...
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
22.04.2010, 21:58     Метод случайного поиска #11
Трассировка. Метод вероятностной маршрутизации.
Метод бестолковый, но он существует и даже когда-то применялся о_О
positron
22 / 7 / 1
Регистрация: 22.04.2010
Сообщений: 105
23.04.2010, 14:23     Метод случайного поиска #12
Цитата Сообщение от PointsEqual Посмотреть сообщение
вообщем сам алгоритм это 1 строчка ?)
C++
1
while ( arr[pos = rand() % size] != find )
а где примняется такой?
Кстати эта строчка не совсем рациональна, если учесть, что нужного нам решения не существует, то будет бесконечный цикл...
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.04.2010, 14:58     Метод случайного поиска #13
positron, а Вы попробуйте скомпилировать, запустить и ввести не то, что попросит...
positron
22 / 7 / 1
Регистрация: 22.04.2010
Сообщений: 105
23.04.2010, 18:31     Метод случайного поиска #14
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main()
{   
    const int size=10;
    int arr[]={0,1,2,3,4,5,6,7,8,9},find,pos;
    printf("Input value: ");
    scanf("%d",&find);
    srand(0);
    while ( arr[pos = rand() % size] != find );
    printf("Result = %d",arr[pos]);
    getch();
}
Если я правильно понял собственно поиск, то если значение отсутствует в массиве, бесконечный цикл....
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.04.2010, 18:58     Метод случайного поиска #15
positron, если бы Вы внимательно посмотрели, заметили бы проверку на допустимость искомого значения
C
1
2
3
4
...
if ( find < 1 || find > 10 )
        exit(1);
...
А вообще это просто пример, который первым в голову пришёл, нечего к нему требования, как к ядру Матрицы предъявлять!

Добавлено через 7 минут
Цитата Сообщение от positron Посмотреть сообщение
Если я правильно понял собственно поиск
Кстати не правильно Вы поняли! Ищется не элемент в массиве, а его индекс.
positron
22 / 7 / 1
Регистрация: 22.04.2010
Сообщений: 105
23.04.2010, 19:54     Метод случайного поиска #16
easybudda, аа, ну да, не заметил, извините) Но в данном случае этот метод используется для нахождения минимума унимодальной функции...
Полное задание такое:Написать программу, осуществляющую поиск оптимального значения функции или решение уравнения заданным методом. Интервал поиска (или начальную точку – в зависимости от метода) вводит пользователь. На экране пользователю должен отображаться ход решения, т.е. все промежуточные точки и значения функции в этих точках. Начальные условия (функция, интервал/начальная точка) и ход поиска должны дублироваться в текстовый файл. Имя файла вводит пользователь. Интервал/начальную точку выбирать в пределах [-10;10].
Если методе Фибонначи:
C
1
2
3
4
5
6
float function(float x)//функция, экстремум которой нужно найти
{
    float exp=2.718281, y;
    y=(sin(x*x/10)*pow(exp,x/10))/(x*x+1);
    return y;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
P1=P2=1;
while(abs(a-b)>e)
{
        x1=b-(P1/P2)*(b-a);
        x2=a+(P1/P2)*(b-a);
        if(function(x1)>function(x2))
            a=x1;
        else if(function(x1)<function(x2))
            b=x2;
        P2=P1+P2;
        P1=P2-P1;
        printf("\nШаг %d: \nТекущий интервал поиска:%f  %f\nЗначения в этих точках: %f    %f",i,a,b,function(a),function(b));
                i++;
}
То здесь x1 и x2 нужно брать рандомно, а вот как использовать rand(), чтобы x1 и x2 не выходили за рамки (а,b) это надо подумать...

Добавлено через 4 минуты
Цитата Сообщение от easybudda Посмотреть сообщение
Ищется не элемент в массиве, а его индекс.
Это я понял, у меня он как раз и ищется.. Просто если усложнить задачу и заполнить массив не по порядку, то сложно будет ограничить ввод искомого значения
jerrald
1 / 1 / 0
Регистрация: 27.12.2010
Сообщений: 86
25.11.2011, 09:00     Метод случайного поиска #17
Цитата Сообщение от positron Посмотреть сообщение
Метод экспериментального поиска экстремума функций многих переменных. Основная идея метода заключается в том, что точку каждого пробного опыта для изучения поверхности отклика выбирают случайным образом. Несмотря на произвольность выбора пробной точки, алгоритм случайного поиска позволяет последовательно приближаться к экстремальной области.

То есть если в методе деления отрезка пополам, мы берем точки для сравнения, откладывая равные отрезки от середины отрезка, то здесь, возможно, точки берутся рандомно...
А есть блок схема этого метода или программа. Очень нужно для курсовой
Twinky
0 / 0 / 0
Регистрация: 27.02.2012
Сообщений: 8
26.05.2012, 01:12     Метод случайного поиска #18
http://bigor.bmstu.ru/?cnt/?doc=MO/base.cou

вот описание всех вариаций этого метода

мне тоже попалось залание "оптимизация функции одной переменной методом случайного поиска"
jerrald
1 / 1 / 0
Регистрация: 27.12.2010
Сообщений: 86
27.05.2012, 00:25     Метод случайного поиска #19
Цитата Сообщение от Twinky Посмотреть сообщение
http://bigor.bmstu.ru/?cnt/?doc=MO/base.cou

вот описание всех вариаций этого метода

мне тоже попалось залание "оптимизация функции одной переменной методом случайного поиска"
да уже не нужно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 01:19     Метод случайного поиска
Еще ссылки по теме:

C++ Адаптивный метод случайного поиска
C++ Метод поиска по массиву уникальных чисел за один проход
Функция / метод поиска C++

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

Или воспользуйтесь поиском по форуму:
Twinky
0 / 0 / 0
Регистрация: 27.02.2012
Сообщений: 8
13.06.2012, 01:19     Метод случайного поиска #20
Цитата Сообщение от jerrald Посмотреть сообщение
да уже не нужно
а у тебя не осталась курсовая?
Yandex
Объявления
13.06.2012, 01:19     Метод случайного поиска
Ответ Создать тему
Опции темы

Текущее время: 17:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru