10000个球中随机取出1000个球

本文探讨了从10000个球中高效随机选取1000个球的算法问题,提出了一种通过逐步缩小随机数范围的方法,并用Python实现了该算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天看到一个算法题,说有10000个球,从中随机取出1000个,要求高性能?

 

 

刚开始我的想法是,循环0-1000 每次在0-10000中产生随机数,如果map中不存在,就放入map中,基数加1,如果存在,不加。这个方式基本能实现,但是效率不高,而且理论上有可能死循环。

 

还有一个方式就是,循环1000次,每次产生0-9的随机数,然后基数*10+随机数,存入map中。这样1000次肯定产生不同的球,第二个算法就是每次概率减少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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值