以下算法将显示多少颗星星?



给定下面的代码,以下算法(平均(将显示多少颗星?通过跟踪前几次迭代,我确定它是 99,但其他人告诉我它应该是 100。但是,为什么应该是 100,而不是 99?当 nNum 等于从 1 到 9 的数字时,我们确实为每个生成的相应随机数打印出大约 10 颗星(从 1 到 9 的随机数中打印出 9 颗星,从 0 中再打印出 1 颗星,作为前一个 nNum 的随机数生成的随机数,导致 nNum--(。但是当 nNum = 10 时,我们没有来自"前一个"nNum 的 1 颗额外的星星来生成一个随机数 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种子,它不会发生(

最新更新