给定以下代码,以下算法将显示多少颗星(平均)?通过跟踪前几次迭代,我确定它是 99,但其他人告诉我它应该是 100。为什么它应该是 100,而不是 99?当 nNum 等于 1 到 9 范围内的数字时,我们确实为每个生成的相应随机数打印了大约 10 颗星(从 1 到 9 的随机数中有 9 颗星,而生成的 0 中有 1 颗星作为导致 nNum-- 的前一个 nNum 的随机数)。但是当 nNum = 10 时,我们没有从“前一个”nNum 中产生随机数 0 的那一颗额外的星。(我希望我在这里说的是有道理的......!)
public static void main(String[] args)
{
int nNum = 10;
printStar(nNum);
}
public static void printStar(int nNum)
{
if(randNumGen.nextInt(10)<1)
nNum--;
if(nNum>0)
{
System.out.print('*');
printStar(nNum);
}
}
最佳答案
您正在根据随机数减少变量值
if(randNumGen.nextInt(10)<1)
nNum--;
基于此,您将打印至少 9 颗星(假设随机生成的总是 0)。而且,另一方面,您可能拥有无限颗星星(尽管从概率上讲,由于 PRNG 种子,这不会发生)
关于java - 以下算法将显示多少颗星?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58329720/