现有1至10000000,共一千万个数,每次随机抽取10个数存到数据库,保证每次抽取的数据没有重复,各位高手有何好建议…
解决方案
20
Enumerable.Range(1,10000000).OrderBy(d=>Guid.NewGuid())
然后按分页思路循环每次取10条存数据库即可,即第一次就将全部数据全部打乱了,后面只是分批保存
2
1楼正解
5
就是让你先生成1千万个,打乱顺序,以后就从这队列里拿
5
求指点。
随意方式生成种子表1-1千万,种子表用完可以删除。定义随机数表,三个字段自增id,随机数,使用状态,利用Insert into 随机表(xxx) select (xxx) from 种子表 order by NewID()的方式把种子表的数字乱序插入随机表,使用的时候每次top10后记得把使用状态变更掉,下次就仍然可以top10
2
http://www.jb51.net/article/66255.htm
2
现有1至10000000,共一千万个数,每次随机抽取10个数存到数据库,保证每次抽取的数据没有重复,各位高手有何好建议…
—
看错了。
这个只能用 GUID 和 红黑表 。将一千万个数放到表里, 再10个一组输出。前提是你电脑的内存得够。
—
看错了。
这个只能用 GUID 和 红黑表 。将一千万个数放到表里, 再10个一组输出。前提是你电脑的内存得够。
2
var datas = new List<int>(); var rnd = new Random(); while (datas.Count < 10) { var x = rnd.Next(1000000000); if (!datas.Contains(x)) datas.Add(x); }
2
Random 的随机周期是 65536
所以你必须要备案已经取走的数字
所以你必须要备案已经取走的数字