java - 如何在两组不同的数字之间创建随机值

标签 java random unicode

我试图在以下两组 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/

相关文章:

java - Android Service-Activity 2种通信方式

java - 没有参数的私有(private)构造函数的目的是什么?

python - 将字符串 '\u05d9\u05d7\u05e4\u05d9\u05dd' 转换为其在 python 中的 unicode 字符

java - Linux/Java - 更改 SecureRandom 的种子源

java - 为什么不间断空格不是Java中的空白字符?

带有 unicode 和标点符号的 Javascript 正则表达式

java - GAE 1.7 Conversion API Java html -> pdf ConversionResult 始终返回 test.pdf

Java (Android) Html 表解析到数据库 (SQLite)

c - 生成没有随机函数的完全随机数?

c++ - 两个值之间的随机数