Random 在一个随机数上生成两个随机数会影响结果吗?

Random 在一个随机数上生成两个随机数会影响结果吗?,random,Random,我需要生成一个介于1和52之间的随机数,用于纸牌游戏(我知道如何) 我可以使用random(52)直接参考包装中的每张卡,也可以使用random(4)和random(13)分别获得套装和价值 我可以通过r div 13和r mod 13+1从1到52之间的数字中获取套装和数值 但我想知道生成两个随机数是否会影响结果的“随机性”。因为生成的数字将是伪随机数,所以这可能会以某种方式影响它 如果较低的数字4和13与52没有区别,那么这是否会成为一个问题?如果您使用的是低质量的PRNG(如您的平均值ra

我需要生成一个介于1和52之间的随机数,用于纸牌游戏(我知道如何)

我可以使用
random(52)
直接参考包装中的每张卡,也可以使用
random(4)
random(13)
分别获得套装和价值

我可以通过
r div 13
r mod 13+1
从1到52之间的数字中获取套装和数值

但我想知道生成两个随机数是否会影响结果的“随机性”。因为生成的数字将是伪随机数,所以这可能会以某种方式影响它


如果较低的数字4和13与52没有区别,那么这是否会成为一个问题?

如果您使用的是低质量的PRNG(如您的平均值
rand()
implementation:当然它会影响内容,但不会以一种不知道您的确切PRNG实现和确切代码就很容易预测的方式影响内容。由于“better”的某些值,其中一个可能比另一个“better”


如果你使用的是高质量的伪随机数:不,没关系。大胆一点。

对。你必须假设你的伪随机数的分布是“好的”。如果是,这两种方法是等效的。如果不是,你已经有麻烦了,不清楚这两种方法中的哪一种是更好的缓解/解决方法。是否存在规模(即,2^100或更多)可能会导致问题?或者是相同的?在某一点上,您生成的数字的精度将高于PRNG可以处理的精度(通常为32或64位)。在这种情况下,对于您想要的每个结果,您可能需要生成2个或更多的数字。如果PRNG能够(关于在指定范围内产生均匀分布的数字),这并不重要。@Tim这也取决于您对“更好”的定义,但简单的回答是,低质量PRNG在每个范围大小都有模式问题。