在没有语言提供的方法的情况下生成随机数

时间:2014-02-02 04:54:10

标签: algorithm random

这是我遇到的面试问题之一。如何在不使用语言提供的方法的情况下生成随机数? (不使用Random,Math.random(),rand()等。)。我能想到的最好的就是使用(虽然我对这个公式的随机性一无所知)

Xn+1 = ( aXn+C ) mod m . a,m constant and C increasing by some value.

还有其他有效(运行时和随机)方法吗?

2 个答案:

答案 0 :(得分:0)

以纳秒为单位的系统时钟r = clock()%2可用于二进制随机生成器,然后使用r构造n位数。

注意: - 访问者没有提及不使用clock()。

答案 1 :(得分:0)

如果您可以访问互联网,则会有“真实”随机数的来源。例如。 www.random.org。

如果没有,您可以存储足够大的随机数数组,初始索引是您提供的值或基于时钟的值,并在数组中循环递增。这显然不是随机的,但可能足够接近。

你的技术也很好。 Java在Random中使用它。 http://docs.oracle.com/javase/6/docs/api/java/util/Random.html