这是我遇到的面试问题之一。如何在不使用语言提供的方法的情况下生成随机数? (不使用Random,Math.random(),rand()等。)。我能想到的最好的就是使用(虽然我对这个公式的随机性一无所知)
Xn+1 = ( aXn+C ) mod m . a,m constant and C increasing by some value.
还有其他有效(运行时和随机)方法吗?
答案 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