随机数概率

coz*_*zzy 5 c# random statistics probability

我试图从4个数字中随机选择.我需要比较这两种算法的概率.

1#

                int a = random.Next(0, 4);

                if (a = 0)
                    statement1
                if (a = 1) 
                    statement2
                if (a = 2)
                    statement3
                if (a = 3) 
                    statement4
Run Code Online (Sandbox Code Playgroud)

2#

                int a = random.Next(0, 1000)

                if (a < 250)
                    statement1
                if (a >= 250 && a < 500) 
                    statement2
                if (a >= 500 && a < 750)
                    statement3
                if (a >= 750) 
                    statement4
Run Code Online (Sandbox Code Playgroud)

如果我认为它是相同的,我是对的吗?第一个代码中statement1的概率是1/4,第二个代码中的概率是250/1000,所以它也是1/4.但有人告诉我,当我使用更大范围的随机数时,如代码2#,它在统计上更准确.我已经制作了多次重复这些代码的项目,但我不确定它能给我看一些结果.

Ras*_*ber 4

它们是完全等价的(除了第一个由于在 if 子句中使用=而不是 而无法编译这一事实)。==

为了证明这一点,看看 的实现Random.Next(int, int)。按照你的价值观,Random.Next(0, 4)就是

(int) (Random.Sample() * 4)
Run Code Online (Sandbox Code Playgroud)

Random.Next(0, 1000)

(int) (Random.Sample() * 1000)
Run Code Online (Sandbox Code Playgroud)

,其中Random.Sample()是返回随机双精度值的私有方法。

现在应该很容易看出,当Random.Next(0, 4)返回0 到 250 之间的数字时,将返回0 。Random.Next(0, 1000)

  • @Live,这在 C# 中不是这样。它不会编译并会产生编译器错误:“无法将类型‘int’隐式转换为‘bool’” (2认同)