我试图在以下两组 unicode U+0020 到 U+007E 和 U+00A0 到 U+00FF 之间生成一个随机字符。我已经创建了代码来生成 U+00A0 到 U+00FF 之间的值,但我还需要我的生成器包含从 U+00A0 到 U+00FF 的值,这怎么可能?非常感谢任何帮助,这就是我到目前为止所得到的。 (P.S.我正在使用种子进行测试)。例如,我不只是尝试创建 1-10 之间的整数,而是想知道如何创建 1-10 或 50-100 之间的随机数。
private static char random(){
long seed = 1776;
Random number = new Random(seed);
int randomNumber = number.nextInt(126) + 32;
char a = (char) randomNumber;
return a;
}
最佳答案
要生成多个范围内的随机数,您首先需要计算目标数据集中的值总数,然后为该总数生成一个随机数,并将其分配给适当的集合。
生成 0x20 - 0x7E 和 0xA0 - 0xFF(含)范围内的 20 个随机数的示例代码:
int low1 = 0x20, high1 = 0x7E, low2 = 0xA0, high2 = 0xFF;
int count1 = high1 - low1 + 1;
int count2 = high2 - low2 + 1;
long seed = 1776;
Random rnd = new Random(seed);
for (int i = 0; i < 20; i++) {
int n = rnd.nextInt(count1 + count2);
if (n < count1) { // random number is for range 1
n = n + low1; // offset into range 1
} else { // random number is for range 2
n = n - count1 + low2; // offset into range 2
}
System.out.printf("%02X ", n);
}
示例输出
6B 6B A5 DA B3 F7 2B C6 AB F2 3F EE F9 A5 28 31 AD D3 66 B0
关于java - 如何在两组不同的数字之间创建随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123769/