日期:2014-05-18  浏览次数:20655 次

新手问题:关于随机数
int   a;
int   b;
a=new   random().next(1,14);
b=new   random().next(1,14);

为什么总是a=b;
有什么好的办,让其不相等。

------解决方案--------------------
我是这样理解的:
Random rA = new Random();
Random rB = new Random();

rA,rB共用一个堆栈,同时他们都有各自的索引,
他们根据各自的索引取值,如果索引对应的堆栈中没有值就创建.

例如:int a = rA.Next(1,14);
int b = rA.Next(1,14);
int c = rB.Next(1,14);
int d = rB.Next(1,14);
输出结果 a=c,b=d;


你自己测试一下就知道了
------解决方案--------------------
例如:有个箱子,箱子有很多层,索引就对应箱子的层次

堆栈就相当于往这个箱子里塞东西,每层都只能放一个东西.先往里塞,要用时再取出.遵守先进后出的原则.
rA,rB共用一个堆栈,同时他们都有各自的索引,
他们根据各自的索引取值,如果索引对应的堆栈中没有值就创建.

例如:int a = rA.Next(1,14);
int b = rA.Next(1,14);
int c = rB.Next(1,14);
int d = rB.Next(1,14);
int e = rB.Next(1,14);
int f = rB.Next(1,14);
输出结果 a=c,b=d;


rA,rB共用这个箱子,他们每次对照索引往里放东西时都会先看下里面有东西吗?有就用这东西赋值,没有就先生成一个,再用这个赋值
a和c在第一层,b和d在第二层,e在第三层,f在第四层