我需要用整数填充向量,但是我有一些麻烦,我需要用随机数填充它,但不是连续两个数字。 (例如,不是这样的:1,4,4,3,5,9) 我制作了这段代码,但效果不好:
随机方法:
private int nasiqim (int max){
Random nasiqimi = new Random();
int i = 0;
i=nasiqimi.nextInt(max);
return i;
}
工作代码:
int i;
con = new int [loja];
for (i=0; i<loja; i++)
{
con[i] = nasiqim(8);
if(i>0){
while(con[i]==con[i-1])
{
con[i] =nasiqim(8);
}
}
i++;
}
结果是这样的:
这不是我需要的,我需要数字真正随机,不像这样, 如果列表将是这样的东西将是伟大的:1,5,6,7,3,0,2,4,1,0,2,3 ...
谢谢!
答案 0 :(得分:1)
我创建了一个示例类
import java.util.*;
public class Foo {
static Random r = new Random();
static int[] con;
static int loja = 8;
private static int randomInt(int max) {
return r.nextInt(max);
}
public static void main(String args[]) {
int i;
con = new int[loja];
for (i = 0; i < loja; i++) {
con[i] = randomInt(8);
if (i > 0) {
while (con[i] == con[i - 1]) {
con[i] = randomInt(8);
}
}
}
System.out.println( Arrays.toString(con));
}
}
所有变量都是静态的,请注意我摆脱了i ++;在for循环结束时递增。
答案 1 :(得分:1)
private int[] con = null;
private final Random nasiqimi = new Random();
/**
* Test run random.
*/
@Test
public void testRunRandom() {
int loja = 10;
con = new int[loja];
for (int i = 0; i < loja; i++) {
int nextRandom = 0;
while (true) {
nextRandom = nasiqim(8);
if (i == 0 || con[i - 1] != nextRandom) {
con[i] = nextRandom;
break;
}
}
}
}
/**
* Gets the random.
*
* @param max the max
* @return the random
*/
private int nasiqim(int max) {
return nasiqimi.nextInt(max);
}