この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。池田です。この投稿はPythonista Advent Calendar 2017初日のエントリとなります。参加ハードルを極限まで下げるべくトップバッターをやらせていただきます。
以前の投稿Pythonista3でおみくじの結果を撮影した写真の片隅に表示するようにしたで紹介したおみくじを日々利用しているのですが、凶と大凶が頻繁に出て凹むことが多いので確率を調整したいと思います。
ヒントを教えてくれた線形回帰を実装してみようでMLアドベントカレンダー初日を飾ったじょんすみす先生に感謝いたします。
ちなみに、以下が運勢画像のリストになるのですが、凶や小吉、中吉などが2枚あるのに大吉は1枚しかありませんでした。
大吉が出にくいのは当たり前だったようです(今さら)。
1.png: 大吉
2.png: 吉
3.png: 中吉
4.png: 大凶
5.png: 小吉
6.png: 凶
7.png: 小吉
8.png: 中吉
9.png: 凶
10.png: 吉
下記のようにして、10枚の画像にそれぞれ抽選確率を定義しています。
unsei = random.randint(1,100)
if 1 <= unsei <= 30:
x = 0
elif 31 <= unsei <= 40:
x = 1
(省略)
大吉である1.pngが抽選される確率を30%となるようにしています。
確率調整したコードは以下となります。
# -*- coding: utf-8 -*-
from PIL import Image
from PIL import ImageDraw
import photos
import random
uranai = ['1.png', '2.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png', '9.png', '10.png']
unsei = random.randint(1,100)
if 1 <= unsei <= 30:
x = 0
elif 31 <= unsei <= 40:
x = 1
elif 41 <= unsei <= 50:
x = 2
elif 51 <= unsei <= 55:
x = 3
elif 56 <= unsei <= 65:
x = 4
elif 66 <= unsei <= 70:
x = 5
elif 71 <= unsei <= 80:
x = 6
elif 81 <= unsei <= 85:
x = 7
elif 86 <= unsei <= 90:
x = 8
elif 91 <= unsei <= 100:
x = 9
img1 = photos.capture_image()
img1.convert('RGBA')
drawbuffer = ImageDraw.Draw(img1)
mesoko = Image.open(uranai[x], 'r')
img1.paste(mesoko, (2550, 2600), mesoko.split()[3])
crop_img = img1.crop((0, 0, 3024, 3024))
crop_img.show()
saveimg = photos.save_image(crop_img)
if saveimg is True:
print ("saved")
これで、大吉めそ子さんに会える確率が高くなりました。お後がよろしいようで...