int[] data=new int[100];for(int i=0;i<100;i++) { data[i]=i+1; }for(int i=0;i<100;i++) { int source=i int desc=ran.Next(0,100)//ran为实例化的随ji函数 Random int tmp=data[source]; source=data[desc]; desc=tmp;
}//这个就是传说中的跳蚤算法,据说还是一个美女发明的,呵呵,随手写的,没调试。
100个不同的随机数 先在一个数组int[] a = new int[n],n>=100 存入不重复的数,比如连续的书,然后随机产生两个数,交换数组中该两个位置上的值,重复交换x遍之后,数组中就可以认为是随机的一个序列,且不重复,取出即可使用 int[] a = new int[100]; for(int i=0; i<100; i++) a[i] = i; Random r = new Random(); for(int i=0; i<200; i++) { int x = r.next(100); int y = r.next(100); int tmp = a[x]; a[x] = a[y]; a[y] = tmp; }此时数组a是一个无需随机数数组,且不重复
Random r = new Random(); int x = r.Next(1, 101); 这个是最简单的
Random r = new Random(); int x = r.Next(1, 101); 这个是简单
多谢楼上兄弟.听说可以用Random的种子实现此功能.不知道如何实现?
Random r = new Random(); int x = r.Next(1, 101); 是不能实现的,会有重复数据.
//这个没问题 Random ran = new Random(); int[] data=new int[100]; for(int i=0;i<100;i++) { data[i]=i+1; } for(int i=0;i<100;i++) { int desc = ran.Next(0, 100);//ran为实例化的随ji函数 Random int tmp=data[i]; data[i]=data[desc]; data[desc]=tmp; }
最原始的办法。 就像洗牌一样,随机产生一位置,抽出一张牌,放到最后。重复1000次,再怎么样也乱七八糟了吧。 using System;namespace ConsoleApplication1 {
int x = r.Next(1, 101);
{
data[i]=i+1;
}for(int i=0;i<100;i++)
{
int source=i
int desc=ran.Next(0,100)//ran为实例化的随ji函数 Random int tmp=data[source];
source=data[desc];
desc=tmp;
}//这个就是传说中的跳蚤算法,据说还是一个美女发明的,呵呵,随手写的,没调试。
先在一个数组int[] a = new int[n],n>=100
存入不重复的数,比如连续的书,然后随机产生两个数,交换数组中该两个位置上的值,重复交换x遍之后,数组中就可以认为是随机的一个序列,且不重复,取出即可使用
int[] a = new int[100];
for(int i=0; i<100; i++)
a[i] = i;
Random r = new Random();
for(int i=0; i<200; i++)
{
int x = r.next(100);
int y = r.next(100);
int tmp = a[x];
a[x] = a[y];
a[y] = tmp;
}此时数组a是一个无需随机数数组,且不重复
int x = r.Next(1, 101);
这个是最简单的
int x = r.Next(1, 101);
这个是简单
int x = r.Next(1, 101);
是不能实现的,会有重复数据.
要保证不重复有多种算法,一个是牺牲时间,一个是牺牲空间。我认为比较好的就是跳蚤算法了。就是我前面写的,先用循环产生数组,a[0]=1,a[1]=2,.....,a[99]=100.然后再打乱他们的顺序就行了。
for(int i=1;I<101;i++)
{
tmp[i]=i;
}for (int i=1;i<101;i++)
{
int x=new random(0,tmp.length);
console.writeline(tmp[x]);
tmp.remove(x);
}
Random ran = new Random(); int[] data=new int[100]; for(int i=0;i<100;i++)
{
data[i]=i+1;
} for(int i=0;i<100;i++)
{
int desc = ran.Next(0, 100);//ran为实例化的随ji函数 Random int tmp=data[i]; data[i]=data[desc];
data[desc]=tmp;
}
就像洗牌一样,随机产生一位置,抽出一张牌,放到最后。重复1000次,再怎么样也乱七八糟了吧。
using System;namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int j,temp;
int []by=new int[100]; //定义数组
for(int i=0;i<100;i++) //赋值
by[i]=i+1;
Random r=new Random(); ///////////随机混排一个数组//////
for(int x=0;x<1000;x++) //重复1000次
{
j=r.Next(0,100); //随即产生一位置,让其左移。 temp=by[j];
for(int i=j;i<99;i++)
by[i]=by[i+1];
by[99]=temp;
}
Console.WriteLine(); ///////////显示输出///////////
for(int i=0;i<100;i++)
Console.Write(by[i]+","); Console.Read();//等停
}
}
}
我说为什么第一次的怎么也看不明白呢,哈