首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该应用什么AI/ML技术在Java中生成推荐的游戏列表?

我应该应用什么AI/ML技术在Java中生成推荐的游戏列表?
EN

Stack Overflow用户
提问于 2018-01-23 19:27:39
回答 1查看 83关注 0票数 0

我正在工作一个人工智能项目,并试图建立一个视频游戏选择器。

用户将输入一个游戏的类型,模式,评级和平台,他们想玩。然后程序将接受该输入,然后使用一些尚未确定的逻辑在符合该标准的gameList数组中选择游戏。然后,它会随机地从符合标准的gameList数组中选择一个游戏,并输出随机选择的游戏,作为用户的建议。

我遇到了一个问题,想出一个最好的方法来使用用户输入来确定哪些游戏符合这个标准。

我目前的方法没有使用任何特殊的人工学习或机器学习的概念来解决这个问题。我对Java相当陌生,我只是想拼凑出如何最好地解决这个问题。

如果有人对一个更好的方法有任何想法,那么我现在有一个更好、更容易的方法来做这件事,这将是非常有帮助的!

下面是我目前拥有的代码(其中一些来自以前的赋值,因此忽略printPeas()和其他对数组没有影响的东西。不幸的是,目前的代码不起作用:

代码语言:javascript
运行
复制
package Games;

import java.util.Scanner;

public class Games
{
    String _gameType;
    String _genreType;
    String _gameMode;
    String _gameRating;
    String _tType;

    public static Scanner input = new Scanner(System.in);

    public Games(String type)
    {
        _gameType = type;
        System.out.println("Suggested type of game is: " + _gameType);
    }
    public Games()
    {
        _gameType = "Sports";
        System.out.println("Suggested type of game is: " + _gameType);
    }
    public void typeInput(String tType)
    {
        _tType = tType;
        System.out.println("Type of Game selected: " + _tType);
    }
    public void genreInput(String gType)
    {
        _genreType = gType;
        System.out.println("Type of Genre selected: " + _genreType);
    }
    public void modeInput(String gMode)
    {
        _gameMode = gMode;
        System.out.println("Type of Game Mode selected: " + _gameMode);
    }
    public void ratingInput(String gRating)
    {
         _gameRating = gRating;
         System.out.println("Type of Rating selected: " + _gameRating);
    }
    public void printPeas()
    {
        String agent = "Agent = Video Game Seletor.";
        String perfmeasure = "P = If it meets the users information being input.";
        String environment = "E = All games within a certain location.";
        String actuators = "A = Library of games to select from, and the display of which game was selected.";
        String sensors = "S = Keyboard input.";
        System.out.println(agent);
        System.out.println(perfmeasure);
        System.out.println(environment);
        System.out.println(actuators);
        System.out.println(sensors);
    }
}


package Games;

import java.util.ArrayList;
import java.util.Random;

public class Game
{
    public static String _genreType;
    public static String _gameMode;
    public static String _gameRating;
    public static String _gameName;

    public void setGame(String genre, String mode, String rating)
    {
        _genreType = genre;
        _gameMode = mode;
        _gameRating = rating;
        _gameName = "";

        Random random = new Random();
        String gameList[] = {"NHL '18", "Madden '18", "Call of Duty: WW2", "GTA V", "Counter-Strike: Global Offsnsive",
            "World of Warcrat", "PUBG", "Assassin's Creed Origins", "Hearthstone", "Battlefield 4"};
        String genreList[] = {"Action", "Sports", "Racing", "MMORPG", "Strategy", "Fighting", "Fantasy"};
        String modeList[] = {"Multiplayer", "Online", "Campaign"};
        String ratingList[] = {"Everyone", "E10+", "Teen", "Mature"};
        String platformList[] = {"PC", "PS4", "Xbox"};
        for(int i=0; i<gameList.length; i++) //trying to have it pull a random game name matching type, genre, mode and rating
        {
            if(genre == genreList[i])
            {
                _genreType = genre;
            }
            if(mode == modeList[i])
            {
                _gameMode = mode;
            }
                System.out.println(gameList[random.nextInt(gameList.length)]);
        }
    }
}

package Games;

import java.util.Scanner;

public class StartSelector
{
    public static String _gameType;
    public static String _genreType;
    public static String _gameMode;
    public static String _gameRating;
    public static Scanner userInput = new Scanner(System.in);
    public static void main(String[] args)
    {
        String gameType = _gameType, genreType = _genreType, gameMode = _gameMode, gameRating = _gameRating;
        Games gameType1 = new Games();
        gameType1.printPeas();
        Games gameType2 = new Games("Action");
        gameType2.printPeas();
        Games gameSelect = new Games();
        System.out.println("Please enter the Genre Type: ");
        genreType = userInput.next();
        gameSelect.genreInput(genreType);
        System.out.println("Please enter the Game Type: ");
        gameType = userInput.next();
        gameSelect.typeInput(gameType);
        System.out.println("Please enter the Game Mode: ");
        gameMode = userInput.next();
        gameSelect.modeInput(gameMode);
        System.out.println("Please enter the Game Rating: ");
        gameRating = userInput.next();
        gameSelect.ratingInput(gameRating);
        userInput.close();
        System.out.println("You have selected a " + genreType + " " 
        + gameType + " " + gameMode + " " + gameRating 
        + " game to play.");
        gameType1.setGame("Action", "Online", "Mature", "GTA V");
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-01-23 19:31:33

你所描述的听起来像是一个经典的机器学习分类器问题。当你为一个人工智能类做这件事时,写一个分类器可能正是你的教授想要你做的!

以一种非常抽象的方式,你可以做的是:

  • 为gameList[]中的每个游戏指定数字值(和权重)、游戏类型、游戏类型和类型。
  • 为每个游戏在4d空间中计算一个向量。
  • 计算用户输入的向量。
  • 找到“最近邻居”游戏向量给你的用户输入游戏向量,把这个最近邻游戏向量输出给你的用户作为建议的游戏。

例如,绝地求生载体是:

  • 行动(1的赋值)
  • 多人(赋值为1)
  • 青少年(3的赋值)
  • platformList (1+2+3的赋值)

绝地求生的载体是<1,1,3,6>。一个用户输入他们想要一个多人游戏,为青少年和所有三个平台,然后会给你的分类器输入(1,1,3,6)。你的计算向量和绝地求生是一样的,你已经计算过了。建议的游戏是绝地求生。

这是你正在做的一个非常巧妙的项目。我上面给出的示例值只是一个例子,您肯定希望对它们进行调整。但是这样做的目的是为了说明机器学习/人工智能分类器是如何在高水平上工作的。

这类东西是机器学习/人工智能的谋生手段,在工业中已经得到了广泛的应用。信用卡公司将发现欺诈,例如,使用分类器。

您可能不需要经过训练数据的分类器的艰苦过程,然后在测试数据上测试它。那完全是另一回事。但是您可以使用分类器方法--即使用输入向量来计算输出标签,以实现您的目标。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48409392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档