Algorithm 不使用语言提供的方法生成随机数

Algorithm 不使用语言提供的方法生成随机数,algorithm,random,Algorithm,Random,这是我面临的面试问题之一。如何在不使用语言提供的方法的情况下生成随机数?(不使用Random、Math.Random()、rand()等。)。我能想到的最好办法就是使用(尽管我对这个公式的随机性一无所知) 有没有其他有效的(运行时和随机性)方法?纳秒系统时钟r=clock()%2可用于二进制随机生成器,然后使用r构造n位数字 注意:-面试官没有提到不要使用时钟()。如果你可以访问互联网,就有“真实”随机数的来源。例如,www.random.org 如果没有,您可以存储一个足够大的随机数数组,将初

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


有没有其他有效的(运行时和随机性)方法?

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


注意:-面试官没有提到不要使用时钟()。

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

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

你的技术也很好。Java随机使用它。

“随机”还是“伪随机”?对于真正的随机数,你需要一个熵源。@ChrisJ.Kiick我猜他指的是伪随机。你提出的算法称为a。有其他方法来实现这些伪随机数生成器,但它实际上是多种多样的,并且不是那种适合单个SO答案的方法。如果您的操作系统提供了这种方法,您可以从
/dev/uradom
中读取。我不知道你的面试官是否会认为这是使用语言提供的方法;但我认为它是独立于语言的。
Xn+1 = ( aXn+C ) mod m . a,m constant and C increasing by some value.