PercentageBasedProbability我有这段代码:Randomrand=newRandom();intchance=rand.Next(1,101);if(chance<=25)//概率为25%{Console.WriteLine("Youwin");}else{Console.WriteLine("你输了");我的问题是,它真的计算出25%的获胜概率吗?25%的胜率在这里?编辑:我刚刚写了这个:doubletotal=0;双概率=0;随机rnd=newRandom();for(inti=0;i<100;i++){doublechance=rnd.Next(1,101);如果(机会<=25)概率++;总计++;}Console.WriteLine(prob/total);控制台.ReadKey();这是非常不准确的。它从大约0.15到0.3。但是当我进行更多检查时(从(i<100)到(i<10000)),它会变得更准确。为什么会这样?为什么100次检查不够准确?这很容易检查你自己:Randomrand=newRandom();int是=0;constint迭代次数=10000000;for(inti=0;i结果:0.2497914结论:是的,是的。编辑:只是为了好玩,LINQy版本:Randomrand=newRandom();constintiterations=10000000;intsum=Enumerable.Range(1,iterations).Count(i=>rand.Next(1,101)对于大多数情况,我会说是。但是,您必须记住,大多数随机化算法都使用伪随机生成器,因此在某种程度上您会受到该特定生成器的特性的影响。我同意@AwokeKnowing,你也可以在1到4之间做一个随机数并得到相同的结果。我假设.Net随机化算法应该足以应对大多数情况。有关详细信息,请参阅:http://en.wikipedia.org/wiki/Pseudorandom_number_generator是的,这应该可以正常工作。像>=75一样也可以。如果你只想要25%,你可以继续做一个1到4之间的随机数。但是请注意,25%的机会并不意味着在100次尝试中,他会赢25次。这只是意味着他每次都有25%的机会获胜。理论上,他每次都能赢。(但这不会发生,尤其是使用伪随机生成器时)。在内部,随机数将介于0和1之间,因此只需随机使用4来代替1000,就可以了。添加参数只是将其投影到您想要的范围内。以上就是C#学习教程:基于百分比的概率分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
