2017年04月17日
PythonでAI(人工知能・無能)プログラミングの作り方入門講座(Hello World〜じゃんけんAIプログラム 乱数編)
キーワード
:Pythonプログラミング じゃんけんAI 乱数編
PythonでAI(人工知能・無能)プログラミングの作り方入門講座
Hello World〜じゃんけんAIプログラム 乱数編
Hello World〜じゃんけんAIプログラム 乱数編
Web上で使える「 Google Colaboratory 」を使って、解説している動画なども作成しましたので、Pythonプログラミング環境の構築や、はじめの一歩でつまずいている方などは必要に応じてご活用ください。
:【Google Colaboratory版】PythonでAIプログラミングの作り方入門講座(Hello World〜じゃんけんAI乱数編) | 記事ページへ
1.チュートリアル動画
2.サンプルコード.Hello Worldプログラミング
3.サンプルコード.じゃんけんAI - 入力なし・勝ち負けの判定なし版
4.サンプルコード.じゃんけんAI - キー入力後の実行・勝ち負けの判定なし版
5.サンプルコード.じゃんけんAI - 入力あり・勝ち負けの判定あり版
人工知能・機械学習・ディープラーニング関連の専門書を学ぶ中で、数学の理論解説で、ギリシャ文字や数式の知識がわからない方もいるのではないかと思います。数学の入門コンテンツも作成していこうと思いますので、関心のある方は、ご活用いただけると幸いです。
:人工知能(AI)・機械学習プログラミング入門者のための数学入門講座(一覧へ)
[ スポンサードリンク ]
このページには、プログラミング言語のPython(パイソン)を使って、比較的に簡単な
「 じゃんけんプログラミング:じゃんけんAI 」
* AI:人工知能・人工無脳
を作る方法を解説していく予定です。
コンテンツの作成状況に応じてご活用いただけると幸いです。
簡単な「 じゃんけんプログラム 」を作りながら人工知能(AI:Artificial Intelligence)について、考えていきたいと思います。今回は、乱数を利用して、コンピュータが、出す手(グー、チョキ、パー)を決定する、プログラミングを実装していきます。
この段階では、乱数で、コンピュータが、行き当たりばったりで、次に出すじゃんけんの手を決めているので、プログラミングの内容としては、
「 人工無能(Artificial incompetence・Artificial Innocence)」
的ではないかと思いますが、プログラミング言語Pythonを使って、様々なプログラムを作る練習としては、面白いのではないかと思います。
▲ この記事のトップへ
1.チュートリアル動画
PythonでゲームAI(人工知能・人工無能)プログラミング入門
Hello World〜じゃんけんAI乱数 編
PythonでゲームAI(人工知能・人工無能)プログラミング入門
Hello World〜じゃんけんAI乱数 編
Pythonプログラミングの始め方に関しては、こちらの記事もご活用ください。
:AI初学者が「 ゼロから作るDeep Learning 」で躓かないためのまとめ
記事では、
「 Anaconda 」(アナコンダ)
* macOS・Windows・Linux対応
というディストリビューション(パッケージ)を利用してPythonプログラミングを始める方法などについてまとめています。人工知能・機械学習などの話題で、Pythonの話題を目にする機会もあるのではないかと思いますが、いざ、プログラミングを始めてみようと思ってみても、始めの1歩を踏み出すのは時間がかかってしまいますよね。
これから、Pythonプログラミングを始めてみたい方の、きっかけになることがありましたら嬉しいと思います。
▲ Hello World〜じゃんけんAIプログラム 乱数編(一覧へ)
2.サンプルコード.Hello Worldプログラミング
▼▼▼ サンプルコード - はじめ ▼▼▼
print("Hello World")
▲▲▲ サンプルコード - おわり ▲▲▲
* Pythonのバージョンは3系で解説しています。
* 上記のプログラムのコード入力は、「 半角英数 」で行なっています。
実行してもエラーが出てしまう方は、再度確認して入力してみてください。
チュートリアル動画も作成してみましたので、イメージがつかみにくい方などは、あわせてご活用ください。
Pythonで「 Hello World 」プログラミング入門
macOS・Windows・Linux対応(動画)
macOS・Windows・Linux対応(動画)
▲ Hello World〜じゃんけんAIプログラム 乱数編(一覧へ)
3.サンプルコード.じゃんけんAI - 入力なし・勝ち負けの判定なし版
▼▼▼ サンプルコード - はじめ ▼▼▼
import random
print("じゃんけん、ぽん")
janken_ai = random.randint(0, 2)
if janken_ai == 0:
print("じゃんけんAI:グーです。")
elif janken_ai == 1:
print("じゃんけんAI:チョキです。")
elif janken_ai == 2:
print("じゃんけんAI:パーです。")
▲▲▲ サンプルコード - おわり ▲▲▲
* Pythonのバージョンは3系で解説しています。
* 「 janken_ai 」という名前の変数を作成しています。
変数名は自分でわかりやすいように名前をつけてみてください。
* 手入力で上記のコードを入力する場合、
エディタによっては自動インデント(行頭の空白文字の数のこと)
してくれると思います。
ただし、上記コードをコピー&ペーストして実行する場合、
if janken_ai == 0:
print("じゃんけんAI:グーです。")
elif janken_ai == 1:
print("じゃんけんAI:チョキです。")
elif janken_ai == 2:
print("じゃんけんAI:パーです。")
のコード記述の、「 print 」のインデントを
お好みの「 半角英数でのスペースキー数 」や、
「 tabキー 」を使用してインデントを新たに作成していただく
必要があるのではないかと思います。
(Web上での表示の兼ね合いで、「 全角でのスペース 」でインデントを表現したため。)
Pythonのコード記述では、インデントが重要な意味を持つようですね。
Pythonでプログラムコードを記述後に、プログラムを実行すると、コンピュータの出すじゃんけんの手が、自動的に表示されるプログラムです。
・ if〜elif:条件分岐
・ random:乱数値の生成
を活用して、プログラミングしています。
プログラムを簡単に説明すると「 0〜2 」の範囲で乱数を生成して、乱数で出力された数(値)が
・ 「 0 」の時は、「 じゃんけんAI:グーです。 」が表示されます。
・ 「 1 」の時は、「 じゃんけんAI:チョキです。 」が表示されます。
・ 「 2 」の時は、「 じゃんけんAI:パーです。 」が表示されます。
というようなニュアンスを、Pythonのプログラミング言語で記述しています。
ちなみに、「 random.randint(0,2) 」のコード記述をすることで「 0から2までの整数 」を生成しています。「 int 」は「 integer:整数型 」を表すようです。
その他の条件分岐の記述方法例としては、
「
elif janken_ai == 2:
」の部分を
「
else:
」と記述することもできるのではないかと思います。
「 else」を使う場合は、「 if 」「 elif 」の条件式に合わなかった数値が返された場合(生成された場合)の処理内容を表現することができます。上記のサンプルコードでは、乱数が「 0〜2 」の3パターンのみですので、じゃんけんAIの出力結果に、特徴を持たせることは難しいのですが、乱数の範囲を「 0〜5 」などと、6パターンにすると、「 else」を使うことで、じゃんけんAIのじゃんけんの手に、クセ(特徴)があるプログラムを作れるのではないかと思います。
興味のある方は、サンプルコードをいじりながら、色々と試してみてください。
例.「 パー 」を出しやすいじゃんけんAIプログラム
▼▼▼ サンプルコード - はじめ ▼▼▼
import random
print("じゃんけん、ぽん")
janken_ai = random.randint(0, 5)
if janken_ai == 0:
print("じゃんけんAI:グーです。")
elif janken_ai == 1:
print("じゃんけんAI:チョキです。")
else:
print("じゃんけんAI:パーです。")
▲▲▲ サンプルコード - おわり ▲▲▲
* 手入力で上記のコードを入力する場合、
エディタによっては自動インデント(行頭の空白文字の数のこと)
してくれると思います。
ただし、上記コードをコピー&ペーストして実行する場合、
if janken_ai == 0:
print("じゃんけんAI:グーです。")
elif janken_ai == 1:
print("じゃんけんAI:チョキです。")
else:
print("じゃんけんAI:パーです。")
のコード記述の、「 print 」のインデントを
お好みの「 半角英数でのスペースキー数 」や、
「 tabキー 」を使用してインデントを新たに作成していただく
必要があるのではないかと思います。
(Web上での表示の兼ね合いで、「 全角でのスペース 」でインデントを表現したため。)
実行した結果は、いかがでしたか?
ちょっとした工夫次第で、出す手に、特徴を持たせたじゃんけんAIを作ることができそうですね。
チュートリアル動画も作成してみましたので、イメージがつかみにくい方などは、あわせてご活用ください。
Pythonで「 じゃんけんAI(人工知能・人工無能) 」ゲームプログラミング入門
入力・勝負判定なし版(動画)
入力・勝負判定なし版(動画)
▲ Hello World〜じゃんけんAIプログラム 乱数編(一覧へ)
4.サンプルコード.じゃんけんAI - キー入力後の実行・勝ち負けの判定なし版
▼▼▼ サンプルコード - はじめ ▼▼▼
import random
print("じゃんけんAIと「じゃんけん」をしよう!")
input("「enter」キーを押してね。")
print("じゃんけん、ぽん")
janken_ai = random.randint(0, 2)
if janken_ai == 0:
print("じゃんけんAI:グーです。")
elif janken_ai == 1:
print("じゃんけんAI:チョキです。")
elif janken_ai == 2:
print("じゃんけんAI:パーです。")
▲▲▲ サンプルコード - おわり ▲▲▲
* 手入力で上記のコードを入力する場合、
エディタによっては自動インデント(行頭の空白文字の数のこと)
してくれると思います。
ただし、上記コードをコピー&ペーストして実行する場合、
if janken_ai == 0:
print("じゃんけんAI:グーです。")
elif janken_ai == 1:
print("じゃんけんAI:チョキです。")
elif janken_ai == 2:
print("じゃんけんAI:パーです。")
のコード記述の、「 print 」のインデントを
お好みの「 半角英数でのスペースキー数 」や、
「 tabキー 」を使用してインデントを新たに作成していただく
必要があるのではないかと思います。
(Web上での表示の兼ね合いで、「 全角でのスペース 」でインデントを表現したため。)
* Pythonのバージョンは3系で解説しています。
プログラムを実行し、「 enter 」キーを押すと、コンピュータの結果が出力されるように、プログラミングをしていきます。
今回は、「 input() 」を使ってキー入力後に、じゃんけんが実行されるプログラムです。
このプログラムに、特徴を持たせたい場合は、
:サンプルコード.じゃんけんAI - 入力なし・勝ち負けの判定なし版
も参考にして、自分なりにアレンジしてみてください。
チュートリアル動画も作成してみましたので、イメージがつかみにくい方などは、あわせてご活用ください。
Pythonで「 じゃんけんAI(人工知能・人工無能) 」プログラミング入門
キー入力後実行・勝負判定なし版(動画)
キー入力後実行・勝負判定なし版(動画)
▲ Hello World〜じゃんけんAIプログラム 乱数編(一覧へ)
5.サンプルコード.じゃんけんAI - 入力あり・勝ち負けの判定あり版
▼▼▼ サンプルコード - はじめ ▼▼▼
import random
janken_hand = ["グーです。","チョキです。","パーです。"]
print("じゃんけんAIと「じゃんけん」をしよう!")
print("\n0:グー\n1:チョキ\n2:パー")
my_janken = int(input("じゃんけんの手を決めてください。数値を入力後「enter」キーを押してね。:"))
janken_ai = random.randint(0, 2)
print("出した手:", janken_hand[my_janken])
print("じゃんけんAI", janken_hand[janken_ai])
hantei =(my_janken - janken_ai + 3) % 3
if hantei == 0:
print("あいこです。")
elif hantei == 1:
print("あなたの負けです。")
else:
print("あなたの勝ちです。")
▲▲▲ サンプルコード - おわり ▲▲▲
* Pythonのバージョンは3系で解説しています。
* 「 janken_hand 」「 my_janken 」
「 janken_ai 」「 hantei 」
という名前の変数を作成しています。
変数名は自分でわかりやすいように名前をつけてみてください。
* 手入力で上記のコードを入力する場合、
エディタによっては自動インデント(行頭の空白文字の数のこと)
してくれると思います。
ただし、上記コードをコピー&ペーストして実行する場合、
if hantei == 0:
print("あいこです。")
elif hantei == 1:
print("あなたの負けです。")
else:
print("あなたの勝ちです。")
のコード記述の、「 print 」のインデントを
お好みの「 半角英数でのスペースキー数 」や、
「 tabキー 」を使用してインデントを新たに作成していただく
必要があるのではないかと思います。
(Web上での表示の兼ね合いで、「 全角でのスペース 」でインデントを表現したため。)
Pythonのコード記述では、インデントが重要な意味を持つようですね。
プログラムを実行し、指定したキー(今回は、0・1・2)のキーボード入力後に「 enter 」キーを押すと、コンピュータの結果と、勝ち負けの判定結果が出力されるように、プログラミングをしていきます。
今回は、「 グーです。」「 チョキです。」「 パーです。」
といった複数の値を1つの変数で管理するために
「 janken_hand = ["グーです。","チョキです。","パーです。"] 」のリスト(list)を作成しています。
ちなみに、リスト内の左から順番に「 0:グーです。 」「 1:チョキです。 」「 2:パーです。 」の数値に割り当てられています。
自分の手とじゃんけんAIのじゃんけんの手の文字表示では、
「 print("出した手:", janken_hand[my_janken])
print("じゃんけんAI", janken_hand[janken_ai]) 」
などで記述しているように、今までのサンプルコードとは違った方法での文字表示の方法も利用しています。
勝ち負けの判定では、
「 hantei =(my_janken - janken_ai + 3) % 3 」
の計算式で示したように、
{ 自分のじゃんけんの手(0〜2) ー じゃんけんAIの手(0〜2) + 3 }/ 3
の余りの数値によって、勝敗の結果を計算するようにしてあります。
「 0:あいこです。 」「 1:あなたの負けです。 」「 2:あなたの勝ちです。 」
チュートリアル動画も作成してみましたので、イメージがつかみにくい方などは、あわせてご活用ください。
【 勝負判定機能付き 】
Pythonで「 じゃんけんAI(人工知能・人工無能) 」ゲームプログラミング入門
入力・勝負判定あり版(動画)
Pythonで「 じゃんけんAI(人工知能・人工無能) 」ゲームプログラミング入門
入力・勝負判定あり版(動画)
▲ Hello World〜じゃんけんAIプログラム 乱数編(一覧へ)
C言語で、
じゃんけんプログラミング作成する方法も
まとめていますので
C言語でじゃんけんAI作成に関心のある方は、
ご活用ください。
乱数を活用した基本的な仕組みの
じゃんけんプログラミングをしたい方はこちら
:AI(人工知能・無能)プログラミングの作り方入門講座(Hello World〜じゃんけんAIプログラム 乱数編)
二次元配列を活用して、
経験値を考慮したプログラムや、
思考パターンをプログラミングしてみたい方はこちら
:AI(人工知能・無能)プログラミングの作り方入門講座(Hello World〜じゃんけんAIプログラム 2次元配列編)
[ スポンサードリンク ]
by はじめてのコンピュータ・パソコン
:AI(人工知能・無能)エンジニア・プログラマー養成講座(一覧ページへ)
:あの「機械学習関連講座」が着々と実績を積み上げ中!! | #442 デジタルライフコラム
▲ 記事ページのトップへ
︎ サイトマップ
︎ プロフィール | サイトポリシー・免責事項など
︎ CONTENTS(コンテンツ)一覧
︎ 独学プログラマーのためのAI(人工知能・無能)プログラム入門講座(一覧)
【このカテゴリーの最新記事】
posted by HajimeteCPC at 17:17
| AIエンジニア・プログラマー養成講座