当前位置: 首页 > 知识库问答 >
问题:

基于百分比的概率

王俊楚
2023-03-14

我有以下代码片段:

Random rand = new Random();
int chance = rand.Next(1, 101);

if (chance <= 25) // probability of 25%
{
    Console.WriteLine("You win");
}
else
{
    Console.WriteLine("You lose");
}

我的问题是,它真的计算出25%的概率在这里获胜吗?球员在这里获胜的几率真的是25%吗?

编辑:

我刚刚写了这个:

        double total = 0;
        double prob = 0;
        Random rnd = new Random();
        for (int i = 0; i < 100; i++)
        {
            double chance = rnd.Next(1, 101);
            if (chance <= 25) prob++;
            total++;
        }
        Console.WriteLine(prob / total);
        Console.ReadKey();

它非常不准确。它从大约0.15到0.3。

但是当我做更多的检查时(从(i

这是为什么?为什么100张支票不够精确?

共有3个答案

葛鸿熙
2023-03-14

是的,应该没问题。就像

但请注意,25%的机会并不意味着在100次尝试中,他会赢25次。这只意味着每次他都有25%的获胜机会。理论上他每次都有可能获胜。(但这种情况不会发生,尤其是在伪随机发生器的情况下)。

在内部,随机数将介于0和1之间,所以使用4和1000是一样随机的。添加参数只是将其投影到所需的范围。

秦永望
2023-03-14

在大多数情况下,我会说是的。然而,你必须记住,大多数随机化算法都使用伪随机生成器,因此在某种程度上,你会受制于该生成器的特性。我同意@awoke的说法,你也可以做一个1到4之间的随机数,得到同样的结果。我认为。Net随机化算法应该可以满足大多数情况。有关更多信息,请参阅:

http://en.wikipedia.org/wiki/Pseudorandom_number_generator

柳晔
2023-03-14

这很容易自己检查:

Random rand = new Random(); 
int yes = 0;
const int iterations = 10000000;
for (int i = 0; i < iterations; i++)
{
   if (rand.Next(1, 101) <= 25)
   {
       yes++;
   }
}
Console.WriteLine((float)yes/iterations);

结果:

0.2497914

结论:是的,是的。

编辑:只是为了好玩,LINQy版本:

Random rand = new Random(); 
const int iterations = 10000000;
int sum = Enumerable.Range(1, iterations)
                    .Count(i => rand.Next(1, 101) <= 25);
Console.WriteLine(sum / (float)iterations);
 类似资料:
  • 关于这些例子,你知道我如何实现概率吗。 应该在属性中循环 在顶部、右侧、底部和左侧循环以检索其成功率值 随机检索一个方向,根据它的成功率(也就是它的概率)与所有东西进行比较。概率越高的人被呼叫的几率越高 程序在setInterval内,每次interval循环时,都会打印值。我尝试了很多不同的方法,但我想不出来。 更新对于我目前遇到的实际问题。 您可以忽略“未找到”。它只是一个随机字符串。数字根据

  • 我希望使用本文提供的答案从列表中随机选择独特的项目。 按照所描述的方法,在我的循环的每次迭代中,我都会生成一个概率值,它是当前项目从列表中被选中的概率百分比。 我需要知道的是,我如何使用这个百分比值来选择项目(或不选择)。 这是我拥有的代码,是

  • 我需要根据该值被选择的百分比概率选择一个值。例如: 时间增量值a的10% 时间增量值b的20% 时间增量值c的30% 时间增量值d的40% 百分比加起来总是正好100% 我遇到过几种像这样的解决方案,但我确定它们不可能是正确的。以下是使用上述解决方案构建的示例程序: 输出: 预期输出: 我相信我需要使用某种算法将百分比转换为从0到99的刻度,以便随机数生成器可以准确地选择一个值。不过,我想不出如何

  • 问题内容: 制作按宽度占据其父容器固定百分比的容器的最简单方法是什么? 当其父容器的宽度更改时,其宽度应更新。 我尝试使用,但是当父容器的宽度更改时,它不会更新。 问题答案: 您想要的是GridBagLayout。(如何使用?) 使用GridbagLayout可以为添加的每个单个组件定义GridBagConstraints。 这些限制条件包括其在锡罐上的确切说明。这是在“网格行”中所有组件上计算的

  • 问题内容: 我想根据百分比值计算颜色: 我该如何计算最后一件事?如果黄色出现在50%处就可以了。 我尝试了这个: 好吧,这行得通,但是我希望将50%左右的颜色在灰色背景上使用时会更浅一些。我该如何做到这一点? 谢谢! UPDATE 我试图将转换为YUV就像是在意见建议。但我仍然遇到同样的问题,即50%的天黑了。另外,在此解决方案中,我现在的白色为<5%。如果我不进行计算,只是稍微好一点,但是在<2

  • 我正在做一个著名的WordCount程序的稍微改进的版本,它应该输出单词占书的百分比。例如: 基本上,我需要计算所有的单词,计算每一个单词的出现次数,将这组值除以总数。所以至少应该有两个工作: 作业1 null null > 我希望避免重复原始输入,这就是为什么我要在job1中同时计算字数和总数。但我不明白如何避免在一个输出中混淆结果。我尝试使用,但在本例中,映射器的结果不会进入reducer。