2012-01-24 59 views
0

我正在写一个应用程序,我需要每天范围内的一个持久随机整数。这个数字应该是不同的,但对于每一天都是持久的。产量应尽可能一致,但分销质量不一定是最好的。我更喜欢这个问题的简单和“足够好”的解决方案。每天在一个范围内生成一个随机整数

我可以使用什么样的算法?

输入:当天(例如,一个整数,表示日以来,一些划时代) 输出:X和Y

之间的随机整数谢谢。

编辑:我工作的平台没有种子PRNG实施。

回答

0

算法:

  1. 种子RNG与当前日
  2. 生成一个随机数
  3. 国防部Ÿ,加X

使用更智能的算法,如果更换第三步你想要一致的概率。

编辑:好的,你没有PRNG。然后,您可能想要将一些哈希算法应用到当前日期并将其视为一个随机数。

+0

谢谢,我应该补充说,据我所知,我工作的平台没有原生种子PRNG。 – rokit

+0

@rokit:那么你可能希望将散列算法应用到当前日期,并将其视为一个随机数。 –

+0

@rokit:您能否添加那条信息“我工作的平台没有原生种子PRNG”来解决世界其他地区的原始问题?谢谢:-) – Oliver

0

我不确定您是要自己编写算法还是只需要编程解决方案。

对于后者,你可以沿着这些线路使用的东西:

new Random((DateTime.Today - new DateTime(1970,1,1)).Days) 
    .Next(min, max) 

这是在C#中,但你的想法:

  • 使用一个固定的开始日期
  • 算上以后的日子里那么
  • 使用该天数作为seed用于随机数发生器
  • 使用效用函数在您的界限内获得一个数字,例如
相关问题