Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得唯一的随机整数? static int n=-1; 私有静态int repeatBuffer[]=新int[10]; 静止的{ repeatBuffer[0]=0; //还有更多 repeatBuffer[9]=9; } 静态公共void randomize(){ 做{ 随机r=新随机(); 随机数=r.nextInt(20); }而(!uniqueInt(randomNumber)); Log.e(TAG,“+randomNumber);//这里我需要一个唯一的int } 私有静态布尔唯一(int随机){ 对于(int i=0;i9) n=0; repeatBuffer[n]=随机; 返回true; }_Java_Android_Random_Unique - Fatal编程技术网

Java 如何获得唯一的随机整数? static int n=-1; 私有静态int repeatBuffer[]=新int[10]; 静止的{ repeatBuffer[0]=0; //还有更多 repeatBuffer[9]=9; } 静态公共void randomize(){ 做{ 随机r=新随机(); 随机数=r.nextInt(20); }而(!uniqueInt(randomNumber)); Log.e(TAG,“+randomNumber);//这里我需要一个唯一的int } 私有静态布尔唯一(int随机){ 对于(int i=0;i9) n=0; repeatBuffer[n]=随机; 返回true; }

Java 如何获得唯一的随机整数? static int n=-1; 私有静态int repeatBuffer[]=新int[10]; 静止的{ repeatBuffer[0]=0; //还有更多 repeatBuffer[9]=9; } 静态公共void randomize(){ 做{ 随机r=新随机(); 随机数=r.nextInt(20); }而(!uniqueInt(randomNumber)); Log.e(TAG,“+randomNumber);//这里我需要一个唯一的int } 私有静态布尔唯一(int随机){ 对于(int i=0;i9) n=0; repeatBuffer[n]=随机; 返回true; },java,android,random,unique,Java,Android,Random,Unique,有时我得到两次相同的int,我想知道问题出在哪里?它甚至可以工作吗?我在这上面花了很多时间,我放弃了。我想我需要在代码中做一些小的调整:)这是随机数生成器的正常行为,只要数字分布保持一致,就可以生成重复的数字 如果需要一组唯一的随机数,可以在循环中生成它们,并在每次迭代时询问新生成的数是否存在于生成的数集中。如果不是,则添加它,如果是,则继续迭代-直到集合具有所需的大小。获取随机整数的更简单方法是创建一个整数列表List,将其与您想要的数字相加。然后使用Collections.shuffle(L

有时我得到两次相同的int,我想知道问题出在哪里?它甚至可以工作吗?我在这上面花了很多时间,我放弃了。我想我需要在代码中做一些小的调整:)

这是随机数生成器的正常行为,只要数字分布保持一致,就可以生成重复的数字


如果需要一组唯一的随机数,可以在循环中生成它们,并在每次迭代时询问新生成的数是否存在于生成的数集中。如果不是,则添加它,如果是,则继续迭代-直到集合具有所需的大小。

获取随机整数的更简单方法是创建一个整数列表
List
,将其与您想要的数字相加。然后使用
Collections.shuffle(List)洗牌列表。现在从列表的开头开始阅读,每次都会得到一个唯一的随机整数


只要确保每次“读取”列表中的数字时,要么将其从列表中删除,要么增加读取位置的索引。

呃,1到20之间的唯一随机数?当它运行到第21次时会发生什么


尝试列出介于1和20之间的整数。使用
Collections.shuffle()
洗牌列表。然后从列表前面弹出第一个项目并使用它

我想这就是OP真正想要做的。他们刚刚把实现搞砸了。谢谢,我以前从未用过。我总是使用Random r=newrandom();:)列表和集合更加友好和简单。:)
static int n = -1;  
private static int repeatBuffer[] = new int[10];
static {
    repeatBuffer[0] = 0;
    //and more
    repeatBuffer[9] = 9;
}
static public void randomize() {

    do {
        Random r = new Random();
        randomNumber = r.nextInt(20);
    } while (!uniqueInt(randomNumber));
    Log.e(TAG, "" + randomNumber); //here I need have a unique int
}

private static Boolean uniqueInt(int random) {

    for (int i = 0; i < 9; i++) {
        if (random == repeatBuffer[i]) {
            return false;
        }
    }
    if (++n > 9)
        n = 0;
    repeatBuffer[n] = random;
    return true;
}