Python > random > BookRecommendation_180307.py > random.choice(), 標準ライブラリのrandom.choiceとnumpy.random.choiceは仕様が違う


動作環境
ideone Python 3 (3.5)

code v0.1

from numpy.random import rand

langs = [ 'Python', 'JavaScript', 'C#', 'Java', '.NET Framework' ]
langs += [ 'JQuery', 'Unity', 'Raspberry Pi', 'Arduino', 'FPGA']
idx = int(rand() * len(langs))
print('%sのおすすめの本を教えてください。' % langs[idx])

val = rand()

postfix = 'あなたが興味が持てそうで2割程度分からない本がおすすめです'

if val < 0.9999/2:
    print('本屋で本をかたっぱしから見て、%s' % postfix)
elif val < 0.9999:
    print('図書館で本をかたっぱしから見て、%s' % postfix)
else:
    print('')

run
JavaScriptのおすすめの本を教えてください。
本屋で本をかたっぱしから見て、あなたが興味が持てそうで2割程度分からない本がおすすめです
run
Unityのおすすめの本を教えてください。
図書館で本をかたっぱしから見て、興味が持てそうで2割り程度分からない本がおすすめです

(実行ごとに結果が変わる)

背景を知らない

「おすすめの本」を聞いてくる人の背景(学習歴、興味)を質問を受けている人は知らない。

背景を知らないアドバイス

背景を知らない状況でのアドバイスは間違ったアドバイスになる。

そのアドバイスを受けた人は、アドバイスの内容に合点がいかず、「xxxさんのアドバイスは不適当だった」と思う。

それは当然と思われる。

自分自身が背景を知っている。

自分の背景を一番よく知っているのはその人自身。

あとは興味が持てそうな本を探して読めばいいと思われる。

by ウォルト・ディズニー

好奇心はいつだって、新しい道を教えてくれる。

別の質問方法

「xxxさんはこれまでどんな本を読まれましたか?参考程度に知りたいと思います。」

その本のリストを作って、本屋で内容を確認する。
「これはすごい」と思うような本があれば、購入して、買った日から読み進める。
1冊読みきるのに85日(例: 計算幾何学 by 杉原厚吉さん)かかるかもしれない。それが本当に良さそうであれば、その日数は無駄にはならない。

参考

謝辞

@shiracamus さんにrandom.choice()とその関数の仕様違いについて教えていただきました。

情報感謝です。