10000球中ランダムに1000球を取り出します
先日アルゴリズムの問題を見て、10000個のボールがあると言って、中からランダムに1000個を取り出して、高性能を要求しますか?
最初の私の考えは、ループ0-1000は毎回0-10000で乱数を発生し、mapに存在しない場合はmapに入れ、基数に1を加え、存在する場合は加算しない.この方式は基本的に実現できるが,効率は高くなく,理論的には死循環する可能性がある.
もう1つの方法は、1000回サイクルし、毎回0-9の乱数を生成し、基数*10+の乱数をmapに格納することです.このように1000回肯定的に異なるボールを生成し、2番目のアルゴリズムは確率が1/1000減少し、最後の確率は1/10にすぎない.前の最後の1/9001です
週末は退屈で、pythonを学んで、ついでにpython実現に来ます
最初の私の考えは、ループ0-1000は毎回0-10000で乱数を発生し、mapに存在しない場合はmapに入れ、基数に1を加え、存在する場合は加算しない.この方式は基本的に実現できるが,効率は高くなく,理論的には死循環する可能性がある.
もう1つの方法は、1000回サイクルし、毎回0-9の乱数を生成し、基数*10+の乱数をmapに格納することです.このように1000回肯定的に異なるボールを生成し、2番目のアルゴリズムは確率が1/1000減少し、最後の確率は1/10にすぎない.前の最後の1/9001です
週末は退屈で、pythonを学んで、ついでにpython実現に来ます
import random
map = {}
for i in range(0,1000):
t = random.randint(i*10,i*10+9)
map[t]=t
for k in map.iterkeys():
print k