当前位置: 首页 > 面试题库 >

为什么使用随机字符串的此代码会打印“ hello world”?

益何平
2023-03-14
问题内容

以下打印语句将打印“ hello world”。有人可以解释吗?

System.out.println(randomString(-229985452) + " " + randomString(-147909649));

而且randomString()是这样的:

public static String randomString(int i)
{
    Random ran = new Random(i);
    StringBuilder sb = new StringBuilder();
    while (true)
    {
        int k = ran.nextInt(27);
        if (k == 0)
            break;

        sb.append((char)('`' + k));
    }

    return sb.toString();
}

问题答案:

java.util.Random使用特定的种子参数(在这种情况下为-229985452-147909649)构造的实例时,它遵循以该种子值
开头 的随机数生成算法。

每个Random使用相同种子构造的对象每次都会生成相同的数字模式。



 类似资料:
  • 下面的print语句将打印“helloworld”。有人能解释一下吗? 而如下所示:

  • 问题内容: 我有以下课程: 这是编译结果; 为什么我的输出中包含数字? 问题答案: 在第二种情况下,它将两个字符(G-71和o-111)的unicode码相加并打印总和。这是因为被视为数字类型,因此在这种情况下,运算符是通常的求和。

  • 我发现了下面的代码。我知道,它看起来没有这个使用看似随机数的方法那么怪异/刺激,但它似乎比这个使用大量数字的位移的方法更复杂: Ideone上的代码 输出: 它是如何工作的?它是某种形式的加密,还是有人在构造它时发疯了?

  • 问题内容: 我所知道的打印,我们可以使用,并且我们可以使用 ,但我们仍然可以使用打印它们。那么,如果我总是习惯于打印它们怎么办?如果我这样做会发生什么问题? 问题答案: 不会有什么不好的,但是动词指示软件包打印为数字(以10为底),动词表示使用可以覆盖的 默认 格式。 请参阅以下示例: 输出(在Go Playground上尝试): 使用动词时,程序包将检查该值是否实现接口(这是一个方法),如果是,

  • 问题内容: 我正在学习amd64汇编程序,并尝试实现一个简单的Unix过滤器。由于未知的原因,甚至简化为最低版本(下面的代码),它也会随机崩溃。 我试图在GNU调试器(gdb)中调试该程序。在gdb的默认配置下,该程序运行良好,但是如果启用地址随机化(),该程序将开始崩溃(SIGSEGV)。清单中标记了有问题的说明: 该程序旨在从stdin读取最多64kB的数据,将其存储到堆栈中的缓冲区中,将读取

  • 问题内容: 我一定缺少关于goroutine的一些基本知识,但是我环顾四周,我看不到任何原因无法解决这个问题。 问题答案: 您的程序在goroutines有机会运行之前已经完成。 这是带有WaitGroup的代码: https://play.golang.org/p/lmCPU9-qkB