我需要一个具有以下功能的幸运抽奖软件或程序环境:
完全随机选择方法
不使用明确的种子和增量(不可预测的方式)
不依赖于第一次选择
可以根据环境因素(如时间,温度,互联网流量,大气噪声)生成随机数,但不能从简单的随机数学函数生成。
你能帮我这个吗?
感谢
答案 0 :(得分:2)
有一种方法可以计算生成随机数,它被称为George Marsaglia的乘法携带方法。这种方法的优点在于它不是基于增量的,也不是以模式播种的。相反,它有一个随机的种子。
P.S此应用程序不是线程安全
http://en.wikipedia.org/wiki/Multiply-with-carry
代码来自本文:http://en.wikipedia.org/wiki/Random_number_generation#Computational_methods
m_w = <choose-initializer>; /* must not be zero */
m_z = <choose-initializer>; /* must not be zero */
uint get_random()
{
m_z = 36969 * (m_z & 65535) + (m_z >> 16);
m_w = 18000 * (m_w & 65535) + (m_w >> 16);
return (m_z << 16) + m_w; /* 32-bit result */
}
答案 1 :(得分:2)
如果通过“抽奖”表示您每天只需要一次号码,那么您可以使用公开可用的股票市场指数的低位数,包括小数位,例如纳斯达克或S&amp; P 500.你也可以使用其中几个索引并使用哈希函数混合数字来获得一个更大的数字。