森林海
也不是“更随意”。rand()基于psuedo随机种子生成一组可预测的数字(通常基于当前时间,该时间总是在变化)。将序列中的两个连续数字相乘会产生一个不同但同样可预测的数字序列。关于这是否会减少碰撞,答案是否定的。它实际上会增加碰撞,这是由于两个数字相乘的结果,其中0 < n < 1..结果将是一个较小的分数,导致结果偏向低端的光谱。一些进一步的解释。在下面,“不可预测”和“随机”指的是某人根据先前的数字猜出下一个数字的能力。神谕。给定种子x它生成以下值列表:0.3, 0.6, 0.2, 0.4, 0.8, 0.1, 0.7, 0.3, ...rand()将生成上述列表,以及rand() * rand()将产生:0.18, 0.08, 0.08, 0.21, ...这两种方法都会为相同的种子生成相同的数字列表,因此,甲骨文也同样可以预测。但是,如果你看一下这两个呼叫相乘的结果,你会发现它们都在下面0.3尽管在最初的序列中有很好的分布。由于两个分数相乘的影响,这些数字是有偏的。结果的数字总是较小,因此更有可能是碰撞,尽管仍然是不可预测的。