0

当我尝试为自己编写基本的彩票应用程序时(请注意,我真的是编程的初学者,尤其是 c#),StackOverflow 上的一个人对我说

rnd.Next(1, 50 * 7) % 50  // Randoming like that will be increase to chance of getting 1 and 49
rnd.Next(1, 50 ) // instead of this 

我真的想知道我们如何测试它?我们可以依靠这个测试吗?请启发我

4

1 回答 1

5

最后一个示例将在 1 到 49(含)之间得到均匀分布。也就是说,1 到 49 之间(包括)任何数字的机会相同。

第一个例子要复杂得多。它将首先创建 1 到 349 之间的任何数字。模 50 将该数字映射到 0-49 区间(包括 0 和 49)。

我们现在介绍获得 0 的可能性——如果随机数是 50、100、150、200、250 或 300。我们还可以通过 N+0、N+50、N+100、N+150 获得数字 1-49 , N+200, N+250, N+300

也就是说,有 6 次获得 0 的机会和 7 次获得任何其他数字的机会。

结论是,第一个示例将给出一个介于 0-49(含)之间的随机数,其 0 的可能性略低于其他数字。

于 2013-04-27T11:57:47.163 回答