web-dev-qa-db-ja.com

セットからrandom.choice? python

私は推測ゲームのAI部分に取り組んでいます。 AIがこのリストからランダムな文字を選択するようにします。ゲーム内で推測された文字をリストから簡単に削除できるように、セットとしてやっているので、再び推測することはできません。

setオブジェクトはインデックス化できません。これを回避するにはどうすればよいですか?

import random 
aiTurn=True

while aiTurn == True:
    allLetters = set(list('abcdefghijklmnopqrstuvwxyz'))
    aiGuess=random.choice(allLetters)



    print (aiGuess) 
61
jamyn
>>> random.sample(set('abcdefghijklmnopqrstuvwxyz'), 1)
['f']

ドキュメント: https://docs.python.org/3/library/random.html#random.sample

73
NPE

random.choice(Tuple(myset))を使用する必要があります。これは、random.sample。私はテストするために以下を書きました:

import random
import timeit

bigset = set(random.uniform(0,10000) for x in range(10000))

def choose():
    random.choice(Tuple(bigset))

def sample():
    random.sample(bigset,1)[0]

print("random.choice:", timeit.timeit(choose, setup="global bigset", number=10000)) # 1.1082136780023575
print("random.sample:", timeit.timeit(sample, setup="global bigset", number=10000)) # 1.1889629259821959

数字から、random.sampleは7%長くかかります。

47
Scott Ritchie