Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 44
1

На шахматную доску наугад ставят две ладьи разного цвета. С какой вероятностью они будут бить друг друга

24.05.2016, 01:25. Показов 2615. Ответов 10
Метки нет (Все метки)

Всем привет. Начал писать программу,но дальше не могу.Как сделать,чтобы можно было задать количество постановок фигур и определения того сколько раз ладьи будут бить друг друга? Я думаю,что может сделать какой-нибудь цикл,но не могу понять как его сделать.Буду безмерно рад любой помощи и предоставленному материалу,который поможет сдвинуть дело с мертвой точки.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
clc;
r=randi([1,8],2)
i=r(1,1)
j=r(1,2)
k=r(2,1)
l=r(2,2)
prov1=(i~=k)
prov2=(j~=l)
  if prov1==0 | prov2==0; 
  disp('Ошибка:Постановка ладей на одну и ту же клетку')
  else i==k | j==l;
    disp('Ладьи бьют друг друга')
  end
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2016, 01:25
Ответы с готовыми решениями:

Сделать шахматную доску, в которой цвета ячеек будут плавно изменяться от верхней строки до нижней
Нужно в матлабе сделать шахматную доску, в которой цвета ячеек будут плавно изменяться от верхней...

Проверить бьют ли друг друга две ладьи
Надо срочно. Ибо скоро спать. Можно просто код, голова не варит разобраться не могу. Все задания...

Найти количество способов поставить на доску восемь ладей так, чтобы никакие две не били друг друга
Дана квадратная доска 12×12 клеток. Найдите количество способов поставить на неё восемь ладей так,...

Даны две матрицы, они поочередно уменьшают друг друга, пока одна не обратится в нуль
Даны две квадратные матрицы, элементы которых неотрицательные целые числа. Матрицы по очереди...

10
Модератор
1228 / 1120 / 338
Регистрация: 13.09.2015
Сообщений: 3,947
24.05.2016, 06:50 2
hipi-hop, сама задача какая?
Так-то всё очень просто. Вариантов размещения первой ладьи будет 64 (по количеству клеток). Вторая ладья для каждого варианта установки первой ладьи может быть размещена в 63 оставшихся клетках. Всего вариантов размещения будет 64*63=4032.
Ладьи бьют друг друга, когда находятся на одной линии по горизонтали или по вертикали. В этом случае вторая ладья может находиться в 7 клетках по горизонтали и в 7 клетках по вертикали относительно первой ладьи, всего в 14 клетках. Тогда вариантов размещения, когда ладьи бьют друг друга, будет 64*14=896
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 44
24.05.2016, 10:54  [ТС] 3
Centurio, Составить программу, позволяющую экспериментально решить следующую задачу по теории вероятностей: на шахматную доску из 64 клеток наугад ставят две ладьи белого и черного цвета. С какой вероятностью они будут «бить» друг друга?

Суть экспериментального решения сводится к N-кратной имитации постановки двух шахматных фигур на доску и подсчету числа случаев, удовлетворяющих заданным условиям. Отношение подсчитанного числа случаев к общему объему эксперимента (N) и есть искомая экспериментальная вероятность.

Имитация расстановки шахматных фигур на доске заключается в генерации четырех целых чисел, распределенных в интервале от I до 8 по равномерному закону. Первая пара чисел (i,j) является координатами первой ладьи, вторая пара чисел (k,l) - координатами второй ладьи. Случай i=k и j=l (постановка ладей на одну и ту же клетку) отбрасывается. Далее проверяется условие i=k или j=l (ладьи «бьют» друг друга). Программа должна позволять:
1. задавать объем эксперимента N;
2. строить по желанию пользователя графическую зависимость оцениваемой вероя гно-сти от объема эксперимента;
3. графически строить по желанию пользователя теоретическое значение вероятности.

Справочные сведения
1. Генерация целых равномерно распределенных в заданном интервале случайных чисел осуществляется с помощью функции randi. Подробности но функции - в help.
2. Теоретическое значения вероятности: Р = 2/9.
0
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
24.05.2016, 11:58 4
Вариант.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clc, clear all
format long
N=10000;
for i=1:N
    A=randi([1 8],1,2);
    B=randi([1 8],1,2);
    if A==B
        k(i)=1;
    elseif (A(1)==B(1) | A(2)==B(2))
        n(i)=1;
        k(i)=0;
    else
        n(i)=0;
        k(i)=0;
    end
end
P=sum(n)/(N-sum(k))
a=abs(P-2/9)
1
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 44
25.05.2016, 00:51  [ТС] 5
Matasin, зачем высчитывается a?
0
93 / 91 / 23
Регистрация: 08.05.2016
Сообщений: 521
25.05.2016, 01:27 6
Посмотреть разность между теоретическим и эмпирическими значениями.
0
Модератор
1228 / 1120 / 338
Регистрация: 13.09.2015
Сообщений: 3,947
25.05.2016, 11:33 7
Ещё вариант:
Matlab M
1
2
3
4
5
6
7
8
9
N=1e4; % объём эксперимента
A=randi(8,2,N); % создание матрицы позиций для первой ладьи
B=randi(8,2,N); % создание матрицы позиций для второй ладьи
C=abs(A-B); % нахождение модулей разностей координат
f=find(~sum(C)); % нахождение номеров совпадающих у обеих ладей позиций 
C(:,f)=[]; % исключение совпадающих позиций
k=nnz(~C); % суммирование позиций, когда обе ладьи находятся на одной линии
P=k/size(C,2); % вычисление вероятности позиций, когда ладьи бьют друг друга
a=abs(P-2/9) % сравнение найденной вероятности с теоретической
1
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 44
25.05.2016, 23:31  [ТС] 8
Centurio, а как сделать,чтобы высчитывался каждый шаг и вероятность записывалась в вектор-строку? В конце,соответственно,выводится последний элемент вектора-строки(это,к счастью,я умею).
0
Модератор
1228 / 1120 / 338
Регистрация: 13.09.2015
Сообщений: 3,947
25.05.2016, 23:35 9
Цитата Сообщение от hipi-hop Посмотреть сообщение
чтобы высчитывался каждый шаг
Что подразумевается под шагом?
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 44
25.05.2016, 23:42  [ТС] 10
Centurio,написал простенький пример,чтобы было понятно
На шахматную доску наугад ставят две ладьи разного цвета. С какой вероятностью они будут бить друг друга
0
Модератор
1228 / 1120 / 338
Регистрация: 13.09.2015
Сообщений: 3,947
26.05.2016, 08:42 11
Лучший ответ Сообщение было отмечено hipi-hop как решение

Решение

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
N=1e4; % объём эксперимента
D=[];
L=0;
while L<N
   A=randi(8,2,N-L); % создание матрицы позиций для первой ладьи
   B=randi(8,2,N-L); % создание матрицы позиций для второй ладьи
   C=abs(A-B); % нахождение модулей разностей координат
   f=find(~sum(C)); % нахождение номеров совпадающих у обеих ладей позиций 
   C(:,f)=[]; % исключение совпадающих позиций
   D=[D C];
   L=length(D);
end
E=cumsum(sum(D==0)); % накопление количества позиций бьющих друг друга ладей на каждом шаге
K=1:N;
P=E./K; % вычисление вероятности позиций бьющих друг друга ладей для каждого шага
plot(K,P)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2016, 08:42

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Надо сделать отступ между полями (они у меня липнут друг на друга) какой тег здесь лучше подойдет?
Вот скриншот таблицы. код Html здесь не нужен наверное, но он есть внизу Просто я незаню как это...

Заданы координаты короля и ладьи на шахматной доске определить бьют ли фигуры друг друга
заданы координаты короля и ладьи на шахматной доске определить бьют ли фигуры друг друга весь код в...

Как сделать так чтобы при спавне предметов они отталкивались друг от друга если они спавнятся близко С#
Есть загвоздка, не как не могу понять как это релизовать, приведу пример : происходит спавн кубов...

Есть два ip, определить при какой маски они будут видится и при какой не будут
Помогите пожалуйста определить при какой маске ip будут видится и при какой не будут. И объясните...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.