AI&プログラミングで遊ぶ

Pythonで乱数について遊びながら学んでみる

はい、どーもまっちゃんです!

今回はPythonで"乱数"を遊びながら学んでいこうという内容になってます

乱数って聞いたことないって方もいると思うんですけど、これが使えるようになるとめちゃめちゃプログラミングが楽しくなります!

特にゲームを作りたい人には必見です!

ゲームの中に出てくるガチャやドロップ報酬、クリティカルヒットなど
運が関わってくる要素は乱数で作ることができます!

そんな乱数を今回も遊びながら身に着けていこうという内容になってます!

プログラミング初心者、PC触ったことがない!という方でもOKです!

これから始まるストーリーを読めば、基本的な使い方は学べるようになるので、ぜひ今回も最後まで楽しんでいってください♪

 

Pythonでサイコロやガチャを設計しながら乱数で遊ぶ

「今回は乱数ってテクを使って、サイコロを作っていくよ

「乱数?聞いたことないな。ってかサイコロなんてフツーに買ってきて使えばいいじゃん?」

「まあ、そーだなw」
「ただ、プログラムで書くからこそ意味があるのよ」

「どゆこと??」

「例えばスマホとかプレイステーションでゲームやるでしょ?」

「やる!デュエルリンクスとかモンハンとかめっちゃやるわ!」

「そん時にドロップ報酬的な感じなランダムで出るアイテムあるじゃん?」
「あるいはガチャでもいいわ」

「あーあるある!」

「それは今回やるサイコロみたいな"乱数"を使って出してるのよ」
つまり、ゲームに組み込まれてるガチャとかドロップ報酬の元を今回自らの力で設計できるよーになる!

「おお!マジか!」

「ついでに"乱数"の使い方もマスターしちゃお―ぜ」

「いいね!やろーか!」

 

サイコロを設計しながら遊ぶ(とりあえず動かす)

「バイア、まずはこのプログラムを打ち込んでプログラムを動かしてみ?」
「プログラムの動かし方が分からんかったら前のこの話に戻ってみるといいかも」

Pythonに標準実装されてるIDLEの使い方「ストーリーで学ぶPython初心者プログラミング第4話」 | まっちゃんLabo (matchan-labo.com)

「りょーかい!」
「まあ、とりあえずそれは大丈夫そーやわ」

「んじゃ、先に進めるか」

「で、どのプログラム??」

「これだよ」

 

「できた!」

「実行してみ?」

「おう!」

「うん。なんか1が出てきた」

「もー1回実行してみ?」

「あれ?数字が変わった」

「もう一回実行してみ?」

「また変わった」

「これ、どーゆー法則で数字が出てきてるか分かる??」

「え、法則!?」
「ん~...」

「もーちょっと実行してみる」

「おーやってみ?」

「...」
「...」

「いけた?」

「いや、分からん。。。」
「もーお手上げ!!」

「ギブするの早いな~(笑)」

「いやーだって全然分からんもん!」
「で、これはどんな数字が出てきてるんだ?」

「よし、正解を教えてやろう...」

「(ゴクリ...)」

「正解は..」

「(ドキドキ...)」

「"ランダムで数字が出ている"でしたー!」

「うおーーーーーい!!!!」
「なんじゃ!ランダムって~!!」

「いやーそのままよ?でたらめな数字が出てるだけw」

「なんだよーそれ!!」

「まあ、そー怒るなって~(笑)」

「あんなに考えたのに...許せん」

「こ、こんな風にコンピュータがテキトーな値を出してくれるのよw」
「だからガチャとかドロップ報酬を設計する時にもこのテクは使えそーでしょ?」

「たしかにランダムで出てくるってとこはガチャみたいだな」
「サイコロも同じだし」

「だろ?実はこれでもうサイコロは作れてる
だけどこのままだと中身の仕組みが分からないから、ガチャとかドロップ報酬作る時に応用できないだろーから、ここからはその使い方を解説してくわ

 

乱数とは一体なにか?使い方も詳しく解説

「まずさっき使った"乱数"ってのは、毎回でたらめな数字を発生させるものってのは何となく分かったよね?」

「おう、それはなんとなく分かったよ」
「しかもプログラムの中にも何回か"random"とか出てきてるし」

「お、いいとこ気づいたな!」
「それ、どこで見つけた??」

「まず最初にこんな表記があったよ」

「そそ!プログラムの中で乱数を使いたい時は絶対最初にこの一文が必要なんやわ

「"import"ってのはこれからランダムっていうライブラリを使いまっせっていうお知らせをPythonに教えてあげてるイメージ」

「ライブラリ??図書館??」

「まあ、そんなイメージだな」
「この辺の説明はまた別の機会するから、ここではこの表記が必要って覚えとくだけでいいよ」

「なんかよー分からんけど、とりあえずいっか」

「おし、じゃあ次はどこで見つけた??」

「プログラム短いからそんな探さなくても分かるな~」
「これや」

「よく見つけられました~!(笑)」

「なめんな!!(笑)」

「これはaにrandom.randint(1,6)ってのを代入してる」
「この代入って話が分かんなかったらこの話に戻ってみるといいかもな」

【初心者はまずこれ】プログラムの根幹である変数の使い方「ストーリーで学ぶPython初心者プログラミング第5話」 | まっちゃんLabo (matchan-labo.com)

「んで、その肝心な"random.randint(1,6)"ってのは何なの??」

「実はこれ、1~6の間の整数をランダムに表示するって意味なんだわ」
「()の中身でその数を指定してる」

「ってことはこれが"random.randint(1,100)"だったら1~100の数字が出てくるってこと!??」

「そゆこと」
「やってみてもいいかもな」

「なるほどね~!だからこれでサイコロになってるわけだ!」
これなら別に1~6までのサイコロじゃなくても無限に作れるな!

「もしボードゲームとかで12面サイコロとか必要になったらこれをササっとプログラムしてやるのもいいかもね」
「ちなみにもーちょい深い話があるんだけど、今はこのまま丸暗記で使えばいいよ」

「これガチャにしよーと思ったらどーするの??」

「んじゃ、そこまでやってから今回は終わりにするか」

乱数使ってガチャ作りに挑戦!

「こんな感じでプログラムが書ける」

「もちろんこれは正解じゃないから、もっと色んな書き方があるけど、こんなこともできるのよ」

「動かしてみるぞ!」

「わおwいきなりUR出たっ!!」

「おお~(笑)引きがいいなw」
「ちなみにこれはif文を使ってる!もしこれが分からんかったらこのお話に戻るといいかもな」

初心者からBMIを計算するプログラムが作れる方法【If文の使い方①】「ストーリーで学ぶPython初心者プログラミング第6話」 | まっちゃんLabo (matchan-labo.com)

「If文はなんとなく分かるよ」

「今回は1~50の数字が出たらノーマルが出るように設定されてる。つまり、50%の確率だな」
「んで、51~75の数字がたらレアが出るから、約25%」
「最終的にはURが10%の確率で出るよーになってる」

「けっこうな確率で出るなw」
「フツーのゲームじゃ1%とかって聞いた気がするぞ」

「その辺は自分でコントロールすればいいじゃん」
「これを作っている時点でバイアはこのガチャにおいてはゲームマスターなんだから」

「おうwそーだったなww」
「じゃあ全部UR出るよーにしてやるか!」

「それじゃ逆にガチャつまらんくなる気がする(笑)」

 

今回遊んだテクニック

乱数の発生方法

  • 乱数を発生させる前に"import random"
  • ".randint()"の中身の数字で範囲を指定
  • 変数名(今回はa)はなんでもOK!

-AI&プログラミングで遊ぶ