我正在尝试在以下两组unicode U + 0020至U + 007E和U + 00A0至U + 00FF之间生成随机字符。我创建了代码以生成介于U + 00A0到U + 00FF之间的值,但是我还需要生成器包括从U + 00A0到U + 00FF的值,这怎么可能?非常感谢您的帮助,这是我到目前为止所拥有的。 (附言:我正在使用种子进行测试)。例如,我不仅想尝试创建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;
}
答案 0 :(得分:2)
要生成一个随机数以落入多个范围,请首先计算目标数据集中的值总数,然后为该总数生成一个随机数,然后将其分配给适当的集合。
示例代码以生成20个随机数,范围为0x20-0x7E和0xA0-0xFF,包括以下值:
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