Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 15.10.2020
Сообщений: 2
1

Игра Угадай число

15.10.2020, 13:24. Показов 5786. Ответов 4

Author24 — интернет-сервис помощи студентам
Помогите улучшить алгоритм, который угадывает число и делает это за как можно меньшее число попыток (без читерства).
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def game_core_v1(number):
    '''Просто угадываем на random, никак не используя информацию о больше или меньше.
       Функция принимает загаданное число и возвращает число попыток'''
    count = 0
    while True:
        count+=1
        predict = np.random.randint(1,101) # предполагаемое число
        if number == predict: 
            return(count) # выход из цикла, если угадали
        
        
def score_game(game_core):
    '''Запускаем игру 1000 раз, чтобы узнать, как быстро игра угадывает число'''
    count_ls = []
    np.random.seed(1)  # фиксируем RANDOM SEED, чтобы ваш эксперимент был воспроизводим!
    random_array = np.random.randint(1,101, size=(1000))
    for number in random_array:
        count_ls.append(game_core(number))
    score = int(np.mean(count_ls))
    print(f"Ваш алгоритм угадывает число в среднем за {score} попыток")
    return(score)
В этом алгоритме 101 попытка



Python
1
2
3
4
5
6
7
8
9
10
11
12
def game_core_v2(number):
    '''Сначала устанавливаем любое random число, а потом уменьшаем или увеличиваем его в зависимости от того, больше оно или меньше нужного.
       Функция принимает загаданное число и возвращает число попыток'''
     count = 1
    predict = np.random.randint(1,101)
    while number != predict:
        count+=1
        if number > predict: 
            predict += 1
        elif number < predict: 
            predict -= 1
    return(count)
В этом 30 попыток


Надо сделать меньше 30. Примерно за 10 попыток, чтобы он угадывал.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2020, 13:24
Ответы с готовыми решениями:

Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона
Игра «Угадай число». Программа задает псевдослучайное число из заданного диапазона. Диапазон и...

Игра угадай число
игра угадай число. не могу набить ответы всех участников, то выбивает когда кто-то проиграл, то не...

Игра угадай число
При угадывании числа все равно пишет что не угадали помогите пожалуйста import random ...

Игра Угадай число
Я создаю текстовую игру на Python. Цель такова: Компьютер загадывает число от 1 до 100, и игрок...

Игра «Угадай число с одной попытки»
Написать программу проверки знания дат основания городов: СанктПетербурга, Москвы и Ельца с...

4
Модератор
Эксперт Python
2689 / 1595 / 513
Регистрация: 21.02.2017
Сообщений: 4,209
Записей в блоге: 1
15.10.2020, 13:28 2
zase22, действительно, расскажи нам, как угадать число без какой либо информации...
0
0 / 0 / 0
Регистрация: 15.10.2020
Сообщений: 2
15.10.2020, 13:55  [ТС] 3
DmFat, я же написала код. компьютер загадывает целое число от 1 до 100 , и нам его нужно угадать.
Под угадать, подразумевается написать программу, которая угадывает число.
Есть алгоритм, я его написала. Мне надо его улучшить. Чтобы было меньше 30 попыток.
0
705 / 351 / 104
Регистрация: 09.02.2018
Сообщений: 798
15.10.2020, 14:00 4
Python
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
46
def game_core_v3(number):
    predict = 50
    count = 1
    if predict < number:
        predict += 25
        count += 1
        if predict < number:
            predict += 12
            count += 1
            if predict < number:
                predict += 7
            else:
                predict -= 6
        elif predict > number:
            predict -= 12
            count += 1
            if predict < number:
                predict += 7
            else:
                predict -= 6
    elif predict > number:
        predict -= 25
        count += 1
        if predict < number:
            predict += 12
            count += 1
            if predict < number:
                predict += 7
            else:
                predict -= 6
        elif predict > number:
            predict -= 12
            count += 1
            if predict < number:
                predict += 7
            else:
                predict -= 6
    while predict < number:
        predict += 1
        count += 1
    while predict > number:
        predict -= number
        count += 1
    return count
 
print(max(map(game_core_v3, range(1, 101))))
1
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
15.10.2020, 14:05 5
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding: utf-8 -*-
from random import *
 
 
def game_core_v2(number):
    count = 1
    mn, mx = 1, 100
    predict = mx / 2
    while number != predict:
        count+=1
 
        if number > predict: 
            mn = predict + 1
        
        elif number < predict: 
            mx = predict - 1
        
        predict = (mx + mn ) / 2
    
    return count
 
num = randint(1, 100)
print(num)
print(game_core_v2(num))
0
15.10.2020, 14:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2020, 14:05
Помогаю со студенческими работами здесь

Игра "Угадай число - Экстрасенс" Не получается реализовать новую игру с генерацией нового числа
Игра &quot;Угадай число - Экстрасенс&quot; Не получается реализовать новую игру с генерацией нового числа по...

Игра "Угадай число"
Игра на питоне которая спрашивает у тебя число и саса угадывает, записываю те числа которые...

Игра "Угадай число"
Всем доброго времени суток. Месяц назад начал заниматься программированием, начал с Python3....

Игра "угадай число"
Цель: написать игрушку &quot;Угадай число&quot;. Условия: Допустимые значения от 1 до 99 включительно....

Реализовать игру «Угадай число», где в качестве игрока, угадывающего число, выступает компьютер
Игра «Угадай число» Реализовать игру «Угадай число», где в качестве игрока, угадывающего число,...


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

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