Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 17.04.2017
Сообщений: 9

Определить вероятность того, что данный билет окажется особенным

14.10.2019, 18:46. Показов 1005. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с задачкой, мне нужно её запрограммировать хоть как то.
Студент едет в трамвае и покупает билет. Анализируя шестизначный номер
этого билета, студент определяет, является ли данный билет особенного. определить вероятность P₀ того, что данный билет окажется особенным.
Описание особенности номера билета: Сумма первых трех цифр отличается от суммы последних трех цифр на 1;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2019, 18:46
Ответы с готовыми решениями:

Определить вероятность того, что хотя бы один билет окажется выигрышным
Из десяти билетов выигрышными являются два. Определить вероятность того, что среди взятых наудачу пяти билетов хотя бы один окажется...

Какова вероятность того, что данный шар окажется белым
У меня тоже простой вопрос -- только у меня два варианта ответа. Есть в в ящике черный и белый шар. Первых два раза вытягивают шары и...

Определить вероятность того, что последний извлеченный шар окажется черным
Здравствуйте. Есть следующая задача, я ее решила, согласно заданию ответ вводится в форму, но пишет что результат неверный. Подскажите, где...

17
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33404 / 21514 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
14.10.2019, 19:39
И здесь язык программирования не указан.
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
14.10.2019, 19:51
Возможно язык не имеет значения, нужен только алгоритм решения.
На счет вероятности, фиг знает. А вот вычислить суммы первой и второй группы цифр, это можно, ну и сравнить тоже разумеется.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
14.10.2019, 20:02
Цитата Сообщение от мама Стифлера Посмотреть сообщение
На счет вероятности, фиг знает
Нужно проверить все 10 млн вариантов номера билета и вычислить, сколько процентов из них являются особенными. Это и будет искомая вероятность. Во всяком случае математически
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
14.10.2019, 20:13
Цитата Сообщение от Evg Посмотреть сообщение
все 10 млн вариантов номера билета
разве не 1 млн вариантов? 6 цифр ведь всего на билете.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
14.10.2019, 20:18
1 млн. Протупил
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
14.10.2019, 21:10
Вот такой алгоритм получился у меня
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* нахождение суммы первой и второй группы цифр и сравнение */
// объявить целые переменные a, b, c, для каждой группы цифр, а так же рабочие переменные x, y, z, n
a1, b1, c1, a2, b2, c2, x, y, z, n = 0
НачалоЦиклаПока n < 1000000 // данный цикл нужно повторить 999999 раз
    z = n // переменное число на билете = счетчику цикла
    a1 = ЦелаяЧасть(z/100000); z = ДробнаяЧасть(z/100000)*100000
    b1 = ЦелаяЧасть(z/10000); z = ДробнаяЧасть(z/10000)*10000
    c1 = ЦелаяЧасть(z/1000); z = ДробнаяЧасть(z/1000)*1000
    a2 = ЦелаяЧасть(z/100); z = ДробнаяЧасть(z/100)*100
    b2 = ЦелаяЧасть(z/10); z = ДробнаяЧасть(z/10)*10
    c2 = ЦелаяЧасть(z/1)
    УсловиеЕсли (a1+b1+c1) = (a2+b2+c2)
        x = x+1 //переменная счетчика совпадений увеличиается на единицу
    КонецУсловия
    n = n+1 // переменная счетчика цикла увеличивается на единицу
КонецЦикла
y = 1000000/x //фактическая вероятость сопадений двух сумм
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
14.10.2019, 21:59
Там условие для особенного билета выглядит немного по другому, но не суть. Алгоритмически задача решена верно. Она решена не оптимально, но для начинающего на оптимальность можно забивать, пока как следует с языком не освоишься. Теперь реализуй это в виде программы на Си или Си++ (или на каком языке ты там решил начать программировать)
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
15.10.2019, 08:00
Проверять миллион что-то уж совсем не оптимально, проще посчитать сколькими способами можно набрать сумму цифр от 0 до 27, а потом в полученном массиве перемножить и сложить соседние значения.
Например, на C#:
C#
1
2
3
4
5
6
7
8
9
10
int[] sum = new int[28];
for(int i = 0; i < 10; i++) 
     for(int j = 0; j < 10; j++)
         for(int k = 0; k < 10; k++) 
              sum[i + j + k]++;        
int result = sum[0] * sum[1] + sum[27] * sum[26];
for(int i = 1; i < 27; i++) {
    result += sum[i] * (sum[i - 1] + sum[i + 1]);
}
double prob = result * 1e-6; // Искомая вероятность
Можно еще оптимальней, наверное.
2
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.10.2019, 10:11
woldemas, с моей тугой математикой кажется, что у тебя получится немного больше, чем положено. Т.е. комбинация типа, когда слева сумма будет 2, а справа 3, посчитается два раза. Хотя, возможно, второй раз будет посчитан вариант, когда слева 3, а справа 2, но с ходу сообразить не могу. Во всяком случае для сумм 0 и 1 такой несимметрии нет, а потому в конечном подсчёте, как мне кажется, что-то не так

В любом случае было бы полезно посчитать "в лоб" и сравнить с твоим вариантом
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
15.10.2019, 10:17
Цитата Сообщение от woldemas Посмотреть сообщение
Можно еще оптимальней, наверное.
C#
1
2
3
4
5
6
7
    int[] sum = new int[28];
    for (int i = 0; i < 10; i++)
        sum[i] = (i + 1) * (i + 2) / 2;
    for (int i = 0; i < 4; i++)
        sum[10 + i] = sum[9] + (8 - i) * (i + 1);
    for (int i = 14; i < 28; i++)
        sum[i] = sum[27 - i];
Для однозначных чисел у нас столбец из десяти единичек [1 .. 1].
Для двухзначных чисел возьмём этот столбец десять раз со сдвигом и получим [1 .. 10 .. 1].
Для трёхзначных чисел возьмём этот столбец десять раз со сдвигом и получим сначала суммы арифметической прогрессии 1..10, а затем 55 + суммы [(9-1) (8-2)...]
Code
1
2
3
4
5
6
9  8  7  6  5  4  3  2  1
10 9  8  7  6  5  4  3  2  1
9  10 9  8  7  6  5  4  3  2  
8  9  10 9  8  7  6  5  4  3
7  8  9  10 9  8  7  6  5  4
6  7  8  9  10 9  8  7  6  5
1
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
15.10.2019, 10:40
тупо в лоб:

Lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
local x = 0
 
for i1 = 0, 9 do
    for i2 = 0, 9 do
        for i3 = 0, 9 do
            for i4 = 0, 9 do
                for i5 = 0, 9 do
                    for i6 = 0, 9 do
                        a = i1 + i2 + i3
                        b = i4 + i5 + i6
                        if ( a - b ) == 1 or ( b - a ) == 1 then
                           x = x + 1
                        end
                    end
                end
            end
        end
    end
end
 
print( x )
109494

вероятность = 109494 / 1000000

Добавлено через 11 минут
Цитата Сообщение от мама Стифлера Посмотреть сообщение
УсловиеЕсли (a1+b1+c1) = (a2+b2+c2)
Цитата Сообщение от AndROMED_A Посмотреть сообщение
Сумма первых трех цифр отличается от суммы последних трех цифр на 1
неувязочка
1
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
15.10.2019, 11:31
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. комбинация типа, когда слева сумма будет 2, а справа 3, посчитается два раза.
Да нет все нормально, шагаем по каждой из сумм первой тройки чисел, для нее (в общем случае) два варианта суммы второй тройки. Два раза варианты второй тройки участвуют, например, когда слева сумма 4, справа 3 и когда слева сумма 2, справа 3. Но так и должно быть.
Цитата Сообщение от vantfiles Посмотреть сообщение
вероятность = 109494 / 1000000
Значит точно все правильно.
1
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
15.10.2019, 11:37
Цитата Сообщение от vantfiles Посмотреть сообщение
неувязочка
согласен, я переформулировал условие для нахождения "счастливых" цифр

Добавлено через 3 минуты
Цитата Сообщение от vantfiles Посмотреть сообщение
тупо в лоб:
получилось отлично, мне понравилось
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
15.10.2019, 12:41
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double Solve()
{
    int[] sum = new int[14];
    for (int i = 0; i < 10; i++)
        sum[i] = (i + 1) * (i + 2) / 2;
    for (int i = 10; i < 14; i++)
        sum[i] = sum[9] + (18 - i) * (i - 9);
 
    int result = sum[0] * sum[1] + sum[13] * (sum[12] + sum[13]);
    for (int i = 1; i < 13; i++)
        result += sum[i] * (sum[i - 1] + sum[i + 1]);
        
    return (double)result/500_000;
}
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
15.10.2019, 22:14
У меня тоже получилось
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h> // для printf
#include <math.h> // для функций int()
main()
{
int a1, b1, c1, a2, b2, c2, x=0, y, z, n;
for (n=1; n<=1000000; n++)
    {
    z=n;
    a1=int(z/100000); z=z-(a1*100000);
    b1=int(z/10000); z=z-(b1*10000);
    c1=int(z/1000); z=z-(c1*1000);
    a2=int(z/100); z=z-(a2*100);
    b2=int(z/10); z=z-(b2*10);
    c2=z;
    if ((a1+b1+c1)-(a2+b2+c2)==1 or (a2+b2+c2)-(a1+b1+c1)==1)
        {
        x++;
        }
    }
printf("variable found = %d\n", x); //проверка, что в переменной
getchar();
}

variable found = 109494
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
16.10.2019, 09:47
Цитата Сообщение от мама Стифлера Посмотреть сообщение
#include <math.h> // для функций int()
int(x) - это не функция, это встроенная операция преобразования типа. Для её использования никаких include'ов не нужно, в твоём случае она описана в синтаксисе Си++ (в Си такой синтаксис работать не будет), к тому же она здесь не нужна от слова "совсем", т.к. "z/10000" - это операция целочисленного деления, она автоматически строит только целую часть

Добавлено через 5 минут
Ну и вообще вместо "or" в Си и Си++ принято писать "||". А or - это макрос или ещё какая-то хрень, которая появилась начиная с какой-то версии стандарта, для использования требует #include <iso646.h>, просто в твоём случае оно уже подключилось через какие-то другие хидера

Детали тут не важны, просто хотелось сказать, что изначально привыкай писать программу так, как это делают культурные люди. Т.е. для логических and, or, not использовать &&, ||, ! соответственно
1
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
16.10.2019, 09:57
Цитата Сообщение от Evg Посмотреть сообщение
к тому же она здесь не нужна от слова "совсем", т.к. "z/10000" - это операция целочисленного деления, она автоматически строит только целую часть
Да действительно, я не сообразил. Получается значит, если объявляешь переменные целого типа int a1, b1, c1, a2, b2, c2, x=0, y, z, n;, то операция преобразования int(), не нужна совсем. Спасибо.

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. для логических and, or, not использовать &&, ||, ! соответственно
понял
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2019, 09:57
Помогаю со студенческими работами здесь

Определить вероятность того, что взятая наудачу деталь окажется отличного качества
В цехе три типа автоматических станков производят одни и те же детали. Производительность их одинакова, но качество работы различно. Станки...

Определить вероятность того, что среди 20 втулок окажется не более двух бракованных
Добрый день. Помогите пожалуйста решить две задачки по теории вероятности. Заранее благодарен!:) 2. Вероятность появления брака при...

Определить вероятность того, что среди 600 игрушек красных окажется от 223 до 264
Пять работниц окрашивают одинаковые по форме и размеру игрушки. Две из них производят окраску в красный цвет и три в синий цвет....

Определить вероятность того, что среди товара окажется один качественный и один бракованный
На склад доставили 2 партии товара. В первой партии 76% качественных изделий, во второй - 83%. Наугад выбирают по одному изделию из каждой...

Определить вероятность того, что в данный момент времени будут работать все станки
Здравствуйте, очень прошу помочь с решением 2-х задач: 1) Работают 3 станка. Каждый станок в течении 10 часов работы останавливается 3...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru