gpt4 book ai didi

java - 如何按递增顺序生成随机数

转载 作者:行者123 更新时间:2023-12-03 22:58:38 24 4
gpt4 key购买 nike

我想按升序生成随机数,例如:0, 2, 3, 5 .. 100,但不是 2, 0, 5 ..

这是我到目前为止想出的:

public static int vol=5;    
public static void main(String[] args) {
int randno = getRandNum();
vol = vol+randno;
System.out.println(getRandNum());
}
private static int getRandNum() {
Random r = new Random();
for (int i =0; i<10; i++)
{
int v=r.nextInt(vol);
System.out.println("r"+v);
}
return vol;
}

我怎样才能实现上述目标?

最佳答案

/**
* Generates random numbers, returning an array of ascending order.
* @param amount The amount of numbers to generate.
* @param max The maximum value to generate.
* @return An array of random integers of the specified length.
*/
public static int[] generateIncreasingRandoms(int amount, int max) {
int[] randomNumbers = new int[amount];
Random random = new Random();
for (int i = 0; i < randomNumbers.length; i++) {
randomNumbers[i] = random.nextInt(max);
}
Arrays.sort(randomNumbers);
return randomNumbers;
}

你可以这样使用它:

// Generates 10 random numbers of value 0 to 100,
// printing them in ascending order
for (int number : generateIncreasingRandoms(10, 100)) {
System.out.print(number + " ");
}

或者,如果您是微优化类型的人并且不想排序,

/**
* Generates random numbers, returning an array of ascending order.
* @param amount The amount of numbers to generate.
* @param max The maximum value to generate.
* @return An array of random integers of the specified length.
*/
public static int[] generateIncreasingRandomWithoutSorting(int amount, int max) {
int[] randomNumbers = new int[amount];
double delta = max / (float)amount;
Random random = new Random();
for (int i = 0; i < randomNumbers.length; i++) {
randomNumbers[i] = (int)Math.round(i*delta + random.nextDouble() * delta);
}
return randomNumbers;
}

用例:

// Generates 10 random numbers of value 0 to 100,
// printing them in ascending order
for (int number : generateIncreasingRandomWithoutSorting(10, 100)) {
System.out.print(number + " ");
}

在这个用例中,每个数字都在 0-10、10-20、20-30 之间的原因是,如果我只考虑整个范围,而您在第一次尝试时得到 100以完整的 100 数组结束。

由于它修改了每个连续数字的范围,因此使用此解决方案可以更好地控制,您并没有真正得到您所要求的(“0 到 100 的 10 个数字按升序排序”)。 (与任何其他不需要排序的解决方案一样)

关于java - 如何按递增顺序生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19971987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com