我尝试使用random.randint(0, 100) ,但有些数字是相同的。 有没有一个方法/模块创build一个列表唯一的随机数字? def getScores(): # open files to read and write f1 = open("page.txt", "r"); p1 = open("pgRes.txt", "a"); gScores = []; bScores = []; yScores = []; # run 50 tests of 40 random queries to implement "bootstrapping" method for i in range(50): # get 40 random queries from the 50 lines […]
最近,我需要从列表中加权随机select元素,无论是否有replace。 虽然有一些众所周知的好的algorithm用于未加权的select,有些用于加权select而没有replace(例如resevoiralgorithm的修改),但我找不到任何用于replace的加权select的好algorithm。 我也想避免使用藏库方法,因为我正在select一个很小的列表中的一小部分,这个列表足够小,可以放在内存中。 在这种情况下有没有人有最好的方法build议? 我有我自己的解决scheme,但我希望find更有效率,更简单,或两者兼而有之。
这个问题询问有关在SQL Server上获得一个随机(ISH)logging样本,答案是使用TABLESAMPLE 。 在Oracle 10中是否有一个等价物? 如果没有,是否有一个标准的方法来从查询集中获得结果的随机样本? 例如,如何从一个通常会返回数百万的查询中获得1,000个随机行?
我有一个10 ^ 7行文件,我想从文件中随机select1/100行。 这是我所拥有的AWK代码,但是它可以在手边浏览所有的文件内容。 我的电脑内存不能处理这样的诽谤。 还有其他的方法吗? awk 'BEGIN{srand()} !/^$/{ a[c++]=$0} END { for ( i=1;i<=c ;i++ ) { num=int(rand() * c) if ( a[num] ) { print a[num] delete a[num] d++ } if ( d == c/100 ) break } }' file
如何在SQL中进行高效的简单随机样本? 有问题的数据库正在运行MySQL; 我的桌子至less有20万行,我想要一个简单的约10,000个随机样本。 “明显的”答案是: SELECT * FROM table ORDER BY RAND() LIMIT 10000 对于大型表来说,这太慢了:它为每一行调用RAND()(它已经把它放在O(n)),并对它们进行sorting,最好使它成为O(n lg n)。 有没有办法比O(n)更快地做到这一点? 注意 :正如Andrew Mao在注释中指出的那样,如果您在SQL Server上使用这种方法,则应该使用T-SQL函数NEWID(),因为RAND() 可能会为所有行返回相同的值 。 编辑:5年后 我再次遇到了一个更大的表,并最终使用@愚昧的解决scheme版本,有两个调整: 将行以2-5倍我所需的样本大小进行采样,以便宜的方式ORDER BY RAND() 将RAND()的结果保存到每个插入/更新的索引列中。 (如果你的数据集不是非常重要的,你可能需要find另一种方法来保持这个列的新鲜。) 要获取1000个表格的样本,我对这些行进行计数,并将结果平均采样到frozen_rand列的平均值10,000行: SELECT COUNT(*) FROM table; — Use this to determine rand_low and rand_high SELECT * FROM table WHERE frozen_rand BETWEEN %(rand_low)s AND %(rand_high)s ORDER BY […]