-5 / 2 / 0
Регистрация: 29.01.2019
Сообщений: 278
1

Выполнить моделирование игры

22.04.2019, 13:46. Показов 3297. Ответов 7

Author24 — интернет-сервис помощи студентам
В телевикторине участнику предлагают выбрать один из трёх закрытых чёрных ящиков, причём известно, что в одном из них – приз, а в двух других – пусто. После этого ведущий открывает один пустой ящик (но не тот, который выбрал участник) и предлагает заново сделать выбор, но уже между двумя оставшимися ящиками. Используя псевдослучайные числа, выполните моделирование 1000 раундов этой игры и определите, что выгоднее делать участнику викторины: выбрать тот же ящик, что и в начале игры, или другой.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2019, 13:46
Ответы с готовыми решениями:

Выполнить моделирование 1000 раундов игры
Используя псевдослучайные числа, выполните моделирование 1000 раундов этой игры и определите, что...

Моделирование игры в покер
Недавно начал изучать С++,использую книгу Харви М. Детела Как программировать на С++.В конце одной...

Моделирование игры в дартс VB 6.0
Нужно создать игру дартс для двух игроков Круговая мишень как в дартс, за один бросок можно...

Выполнить моделирование случайных величин из биномиального распределения
Нужно осуществить моделирование n = 1000 случайных величин из биномиального распределения...

7
11 / 7 / 4
Регистрация: 01.11.2018
Сообщений: 37
22.04.2019, 14:49 2
Парадокс Монти Холла, погугли
1
Verevkin
22.04.2019, 14:50
  #3

Не по теме:

Это классика теории вероятности. Анонимусу надо менять выбор, так шансов больше.

0
-5 / 2 / 0
Регистрация: 29.01.2019
Сообщений: 278
22.04.2019, 14:52  [ТС] 4
А код скинуть можете?
0
11 / 7 / 4
Регистрация: 01.11.2018
Сообщений: 37
22.04.2019, 14:57 5
Лучший ответ Сообщение было отмечено Kadet12 как решение

Решение

Kadet12, Здесь посмотри
1
-5 / 2 / 0
Регистрация: 29.01.2019
Сообщений: 278
22.04.2019, 15:03  [ТС] 6
Спасибо огромное)
0
-5 / 2 / 0
Регистрация: 29.01.2019
Сообщений: 278
22.04.2019, 16:25  [ТС] 7
Используя псевдослучайные числа, выполните моделирование 1000 раундов этой игры и определите, что выгоднее делать участнику викторины: выбрать тот же ящик, что и в начале игры, или другой.

Что не так с кодом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Secret {
public:
  // В конструкторе случайным образом выбирается выигрышная коробочка
  Secret(unsigned int random): _choice(-1), _opened(-1) {
    _boxes.push_back(false);
    _boxes.push_back(false);
    _boxes.push_back(false);
    int index = random % 3;
    _boxes[index] = true;
  }
 
  // В этом методе случаныйм образом выбирается каробочка
  void MakeChoice(unsigned int random) {
    _choice = random % 3;
  }
 
  // В этом методе ведущий показывает нам одну из коробочек после нашего выбора
  // Коробочка, которую показывает ведущий, не содержит приз
  void OpenOne(unsigned int random) {
    while(random % 3 == _choice || _boxes[random % 3])
      random += 1;
    _opened = random % 3;
  }
 
  // В этом методе мы меняем свой выбор на оставшуюся коробочку
  void ChangeChoice() {
    std::set<int> numbers;
    numbers.insert(0);
    numbers.insert(1);
    numbers.insert(2);
    numbers.erase(_opened);
    numbers.erase(_choice);
    _choice = *numbers.begin();
  }
 
  // Проверяем, выйграли мы что-нибудь или нет
  bool IsWiner() {
    return _boxes[_choice];
  }
 
private:
  std::vector<bool> _boxes; // Коробочки, true означает, что там приз
  int _choice;              // Выбранная нами коробочка
  int _opened;              // Открытая ведущим коробочка
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int main() {
  unsigned int total_games = 10000;
 
  // Генерируем случайную последовательность при помощи аппаратного генератора
  HardkeyRandomGenerator random_generator;
  RawData random_data = random_generator.GenerateRandom(total_games * 3);
 
  unsigned int no_choice_change_wins = 0; // Количество выйгрышей, если не менять выбор
  unsigned int choice_change_wins = 0;    // Количество выйгрышей, если менять выбор
 
  for(int i = 0; i < total_games; ++i) {
    Secret secret(random_data.back());      // Создаем коробочки, в одной из которых приз
    random_data.pop_back();                 // Удаляем использованное случайное число
    secret.MakeChoice(random_data.back());  // Выбираем случайную коробочку
    random_data.pop_back();                 // Удаляем использованное случайное число
    if(secret.IsWiner())                    
      no_choice_change_wins += 1;           // Если мы угадали, то добавляем победу к случаю без изменения выбора
    secret.OpenOne(random_data.back());     // Ведущий открывает одну из коробок
    random_data.pop_back();                 // Удаляем использованное случайное число
    secret.ChangeChoice();                  // Меняем наш выбор на оставшуюся коробочку
    if(secret.IsWiner())                    
      choice_change_wins += 1;              // Если мы угадали, то добавляем победу к случаю с изменения выбора
  }
 
  std::cout << "Total games:\t" << total_games <<std::endl;
  std::cout << "Simple wins:\t" << no_choice_change_wins << ", " << (static_cast<double>(no_choice_change_wins)/total_games)*100 << "%" << std::endl;
  std::cout << "Magic wins:\t"  << choice_change_wins    << ", " << (static_cast<double>(no_choice_change_wins)/total_games)*100 << "%" << std::endl;
  return 0;
}
0
-5 / 2 / 0
Регистрация: 29.01.2019
Сообщений: 278
23.04.2019, 12:10  [ТС] 8
/ Генерируем случайную последовательность при помощи аппаратного генератора
HardkeyRandomGenerator random_generator;
RawData random_data = random_generator.GenerateRandom(total_games * 3);
Ошибка тут , как это исправить?
0
23.04.2019, 12:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2019, 12:10
Помогаю со студенческими работами здесь

Моделирование игры с помощью линейного программирования
Моделирование игры с помощью линейного программирования: Торговая фирма разроботола несколько...

Cобираю компьютер под 3D-моделирование, анимацию, современные игры.
Здравствуйте, Cобираю компьютер с нуля, задачи: 3D-моделирование, анимация, современные игры,...

С чего начать 3д моделирование персонажей для игры, создаваемой с помощью Unreal Engine 4
Здравствуйте! Не могли бы мне помочь с одним вопросом?Я создаю игру на Unreal Engine 4,и у меня...

Моделирование игры "Жизнь"
Помогите пожалуйста моделировать игру &quot;Жизнь&quot; как на картинке ниже, в архиве залил полный исходный...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru