x和y的范围是从0到99。在
我现在是这样做的:
excludeFromTrainingSet = []
while len(excludeFromTrainingSet) < 4000:
tempX = random.randint(0, 99)
tempY = random.randint(0, 99)
if [tempX, tempY] not in excludeFromTrainingSet:
excludeFromTrainingSet.append([tempX, tempY])
但这需要很长时间,我真的需要加快速度。在
有什么想法吗?在
我的建议是:
从第2代随机数中选择一个,然后从第2代中选择随机数,然后每隔一代生成一个随机数。正如其他人所指出的,只有10000种可能性,所以在你得到40000个之前你不能循环,但是你得到了要点。在
我肯定会有人来这里使用numpy,但是使用set和tuple怎么样? E、 g.:
编辑:这不是一个无限循环,因为只有100^2=10000个可能的结果,而你一直等到得到40000个结果?在
Vincent Savard的answer速度几乎是这里提供的第一个解决方案的两倍。在
这是我的看法。它需要元组而不是列表来实现哈希:
只要确保这个限制是理智的,正如其他回答者所指出的那样。对于正常的输入,这是更好的算法O(n)而不是O(n^2),因为这是集合而不是列表。而且,python在加载局部变量方面比全局变量更有效,所以总是将这些内容放在函数中。在
编辑:实际上,我不确定它们是O(n)和O(n^2),因为概率分量,但是如果n作为它们看到的唯一元素的数目,估计是正确的。当它们接近可用空间的总数时,它们都会变慢。如果您想要接近可用总点数的点数,则最好使用:
^{pr2}$这将是一个内存占用,但肯定会随着点密度的增加而更快,因为它避免了多次查看同一个点。另一个值得分析的选项(可能比上一个更好)是
相关问题 更多 >
编程相关推荐