根据我的老师的说法,为了做到这一点你做了两个带数字的数组,拥有几个小数。一个正数组和一个负数。
数组1 [0] =例如1.5739
数组2 [0] =例如-5.31729
然后你找到当前时间
201305220957或2013年5月22日上午9:57
使用这个等式:
(适用201305211647 * 1.5739) - 5.31729
- 然后你使用绝对值并舍入到小数点后的1.0,你有你的数字
在大多数发电机中,值是否依赖于时间?
答案 0 :(得分:5)
提前做好准备 - 生成随机数字确实很难做到,并且严重烧伤了一些非常聪明的人(John Von Neumann为一个人)。普通人不应该尝试创建自己的RNG算法。它需要数论,概率和数学方面的专业知识。统计和数值计算。除非你符合所有三个领域的资格,否则你最好使用由人开发的算法。如果您想知道如何正确操作,可以在http://en.wikipedia.org/wiki/Random_number_generation和http://en.wikipedia.org/wiki/Pseudorandom_number_generator找到很多好消息。
直截了当地说,你的老师对这个话题完全不了解。
答案 1 :(得分:0)
您需要的级别随机性是什么?
答案 2 :(得分:0)
如果您需要为加密或统计目的生成随机数,则需要获得一个经过充分研究的生成器。我喜欢的是Mersenne Twister,它具有非常好的统计特性,运行速度快且易于编码。
如果你只需要一个合理随机的生成器 - 例如让游戏中的东西看起来随机 - 你可以使用经典的“线性全等生成器”,这是很容易编写并产生相当随机的输出。 (重载计算不安全)。
LCG发电机:
int seed = 0x333; // chose any number.
int random() { seed = ( seed * 69069 ) + 1; return seed; }
您可以使用多个数字而不是69069.但不要选择自己的数字。如果你不喜欢69069,请从这里选择一个。