110,538
社区成员
发帖
与我相关
我的任务
分享
int[] nArrDatas = new int[10000000];/
//这里面不会有一个重复数据 但是是顺序的
for(int i = 0;i < nArrDatas.Length;i++) nArrDatas[i] = i;
Random rnd = new Random();
for(int i = 0;i < nArrDatas.Length;i++){
//所以说遍历一次 把当前索引数据和一个随机索引数据交换
int nIndex = rnd.Next(nArrDatas.Length);
int Temp = nArrDatas[nIndex];
nArrDatas[nIndex] = nArrDatas[i];
nArrDatas[i] = temp;
}
//此时nArrDatas是乱序的 每次取出十个就是了
如果 你一批数据只用一次的话 没有必要这么浪费空间
list<int> lst = new List<int>();
Random rnd = new Random();
int nCount = 10;
while(nCount >0){
int num = rnd.Next(10000000);
if(lst.Containt(num)) continue;
lst.Add(num);
nCount--;
}
连续生成十个 0-10000000 出现重复的概率太小了 可以直接用上面的方式 还没有那么浪费空间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);
}
var datas = new List<int>();
var rnd = new Random();
while (datas.Count < 10)
{
var x = 以rnd为标志从数据库中随机取数(rnd);
if (!datas.Contains(x))
datas.Add(x);
}
就是一个简单的算法问题。你应该会用心“做”,而不是只会提要求。Enumerable.Range(1,10000000).OrderBy(d=>Guid.NewGuid())
然后按分页思路循环每次取10条存数据库即可,即第一次就将所有数据全部打乱了,后面只是分批保存
Dim R As New Random()
Dim D As New Dictionary(Of Int32, Int32)
While (D.Count < 10)
Dim I As Int32 = R.NextDouble() * 100000
D.Item(I) = I
End While
Me.Text = D.Count