相关疑难解决方法(0)

如何在Java中生成特定范围内的随机整数?

如何int在特定范围内生成随机值?

我试过以下,但那些不起作用:

尝试1:

randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
Run Code Online (Sandbox Code Playgroud)

尝试2:

Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum =  minimum + i;
// Bug: `randomNum` can be smaller than `minimum`.
Run Code Online (Sandbox Code Playgroud)

java random integer

3373
推荐指数
45
解决办法
391万
查看次数

创建没有重复的随机数

在这种情况下,MAX只有5,所以我可以逐个检查重复,但我怎么能以更简单的方式做到这一点?例如,如果MAX的值为20,该怎么办?谢谢.

int MAX = 5;

for (i = 1 , i <= MAX; i++)
{
        drawNum[1] = (int)(Math.random()*MAX)+1;

        while (drawNum[2] == drawNum[1])
        {
             drawNum[2] = (int)(Math.random()*MAX)+1;
        }
        while ((drawNum[3] == drawNum[1]) || (drawNum[3] == drawNum[2]) )
        {
             drawNum[3] = (int)(Math.random()*MAX)+1;
        }
        while ((drawNum[4] == drawNum[1]) || (drawNum[4] == drawNum[2]) || (drawNum[4] == drawNum[3]) )
        {
             drawNum[4] = (int)(Math.random()*MAX)+1;
        }
        while ((drawNum[5] == drawNum[1]) ||
               (drawNum[5] == drawNum[2]) ||
               (drawNum[5] == drawNum[3]) ||
               (drawNum[5] == drawNum[4]) )
        {
             drawNum[5] = (int)(Math.random()*MAX)+1; …
Run Code Online (Sandbox Code Playgroud)

java random

82
推荐指数
6
解决办法
25万
查看次数

Java生成非重复随机数

我想在Java中创建一组没有重复的随机数.

例如,我有一个数组来存储从0到9999的10,000个随机整数.

这是我到目前为止:

import java.util.Random;
public class Sort{

    public static void main(String[] args){

        int[] nums = new int[10000];

        Random randomGenerator = new Random();

        for (int i = 0; i < nums.length; ++i){
            nums[i] = randomGenerator.nextInt(10000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码会产生重​​复.如何确保随机数不重复?

java random duplicates

30
推荐指数
3
解决办法
8万
查看次数

有效地选择随机数

我有一个方法,它使用随机样本来近似计算.这种方法被称为数百万次,因此选择随机数的过程非常有效.

我不确定javas Random().nextInt真的有多快,但我的程序似乎并没有像我想的那样受益.

选择随机数时,我会执行以下操作(半伪代码):

// Repeat this 300000 times
Set set = new Set();
while(set.length != 5)
    set.add(randomNumber(MIN,MAX));
Run Code Online (Sandbox Code Playgroud)

现在,这显然有一个糟糕的最坏情况运行时间,因为理论上的随机函数可以为永恒添加重复数字,从而永远保持在while循环中.但是,数字是从{0..45}中选择的,因此重复的值大部分都不太可能.

当我使用上面的方法时,它只比我的其他方法快40%,这不是近似的,但会产生正确的结果.这大约跑了100万次,所以我期待这种新方法至少快50%.

您对更快的方法有什么建议吗?或许你知道一种更有效的方法来生成一组随机数.

澄清一下,这是两种方法:

// Run through all combinations (1 million). This takes 5 seconds
 for(int c1 = 0; c1 < deck.length; c1++){
    for(int c2 = c1+1; c2 < deck.length; c2++){
     for(int c3 = c2+1; c3 < deck.length; c3++){
        for(int c4 = c3+1; c4 < deck.length; c4++){
         for(int c5 = c4+1; c5 < deck.length; c5++){
             enumeration(hands, cards, deck, c1, c2, c3, …
Run Code Online (Sandbox Code Playgroud)

java random montecarlo approximation

12
推荐指数
2
解决办法
1万
查看次数

从0-9获得四个唯一随机数的最佳方法是什么?

我想生成0到9范围内的四个随机数.使用Java Random类生成四个随机数很容易.

    Random random = new Random();

    int numbers[] = new int[4];

    for(int i=0;i<4;i++){

        numbers[i] = random.nextInt(10);

    }
Run Code Online (Sandbox Code Playgroud)

有了这个,我可以得到四个数字的易象,数组9369,4702等.在这种情况下,有可能在四个数字被重复了许多可能性,我不想在这样的数字重复.

在这里,我想所有的四位数以上阵列是唯一的,这样我可以输出像9543,1234等.

为此,我想到了以下方式.

  1. 生成随机数并指定为第一个数字.
  2. 生成一个随机数并检查第一个数字,如果不同的指定为第二个数字,则再次生成随机数并重复,依此类推.

有没有比上述方法更好的方法,以便我可以轻松快速地获得四个独特的随机数?

任何建议都表示赞赏.

java random numbers

8
推荐指数
4
解决办法
2040
查看次数

在Java中生成一组唯一的随机数

我想在0-500范围内创建10个随机数.但问题是我希望这些数字是唯一的.对于2个随机数,我可以创建如下内容:

int randomItem1 = r.nextInt(500);
int randomItem2 = r.nextInt(500);
while(randomItem1==randomItem2){
    randomItem1=randomItem();
    randomItem2=randomItem();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做10,我认为它会堆叠.而且我这样说是因为我正在尝试创建一个巨大的算法,它试图进行连续的评估,我想要不断地获取10个随机和唯一的数字.我不知道该怎么办.任何想法或建议?

java

6
推荐指数
3
解决办法
2万
查看次数

从Java RNG的范围中删除数字?

我目前正在使用Java的RNG Random r = new Random(),并在while循环中生成0到5之间的新整数.

while (someBoolean == false) {
        int i = r.nextInt(6);
           ....
 }
Run Code Online (Sandbox Code Playgroud)

我想要做的是从范围中删除一个数字(例如,4),以便RNG仍然生成0到5之间的新数字,不包括其中一个值.

我目前最好的选择是:

 while (someBoolean == false) {
        int i = r.nextInt(6);
           if (i == removedInt) { continue; }
          ....
 }
Run Code Online (Sandbox Code Playgroud)

但是我担心这可能导致我的代码长时间运行,其中RNG不断返回我不想要的数字.

[ 为清楚起见; 返回的数字是Connect4网格或2D int数组中的列.该方法是随机地将列移动到列中,直到列填满为止,此时我不再希望能够在该列中播放.]

任何帮助赞赏:)

java random numbers generator

6
推荐指数
1
解决办法
1626
查看次数

为每个数组值生成唯一的随机数

我有这个方法为这个方法中列出的每个数组值生成一个数字(1-10).我希望将整组数字显示为一组唯一数字.这该怎么做?

public static int generateNumbers(int[] lotteryNumbers) {

    Random randNum = new Random();

    lotteryNumbers[0] = randNum.nextInt(10);
    lotteryNumbers[1] = randNum.nextInt(10);
    lotteryNumbers[2] = randNum.nextInt(10);
    lotteryNumbers[3] = randNum.nextInt(10);
    lotteryNumbers[4] = randNum.nextInt(10);

    return lotteryNumbers[4];
}
Run Code Online (Sandbox Code Playgroud)

java random

5
推荐指数
1
解决办法
221
查看次数

如何生成6个唯一的java数字

可能重复:
在Java中生成唯一的随机数

代码将从一个范围生成6个随机数,但需要它们是唯一的融化我的大脑任何指针将非常感激

import java.util.Random;
import java.util.Arrays;
public class numbers
{
private int[] lottoNumbers;
private int nextInt;
private Random r;

public numbers()
{
    lottoNumbers = new int [6];
    r = new Random();
    nextInt();
}
public void nextInt()
{
    System.out.print("***     ");
    for (int i = 0; i < lottoNumbers.length; i++)
    {
        lottoNumbers[i] = r.nextInt(49) +1;
        System.out.print(" " + lottoNumbers[i]);
    }
    System.out.println("     ***");
}
}
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
2564
查看次数

如何生成三个不相等的数字?

这里的数字生成:

for( int i=0; i<3; i++) {
    int randomNumbers = random.nextInt(10) + 1; 
}
Run Code Online (Sandbox Code Playgroud)

在这里我可以收到相同的数字。

例如:5,7,5;

但我只需要接收不同的数字:5,1,9.

有没有可能用一些小代码或者我应该为它写一些方法?

java arrays jvm for-loop set

1
推荐指数
2
解决办法
107
查看次数

如何制作一个随机数,但它不会产生相同的数字

可能重复:
使用随机数生成器对整数进行随机排列

例如,我需要从1到30创建一个随机数.但它不会产生相同的随机数.产生的数量必须彼此不同.

那可能吗?

谢谢

java random

-1
推荐指数
1
解决办法
174
查看次数

如何创建一个返回唯一随机数的函数?

我已经尝试了论坛中的一些解决方案,但对我没有用,如果答案是用科特林语言提供的,那么对我会有所帮助。

java android kotlin

-6
推荐指数
1
解决办法
132
查看次数