1

对于所有擅长操纵随机化的人来说,这是一个问题。我正在Android中制作应用程序。对于这个应用程序,我需要生成具有以下条件的随机值:

  • 我需要生成 13 个随机值

  • 我需要每天获取一组新的这 13 个随机值(基于用户设备的系统)。在一天中,这 13 个值不得更改。

  • 我需要在本地生成这些值,即用户无法连接到互联网以在线获取值。

  • 现在困难的部分:我需要这些值对于每一天都是“唯一的”:用户 1 获得的 13 个随机值必须与用户 2 获得的 13 个值相同。

  • 每个值都有自己的范围(有些是 [1-100],有些是 [1-40])

我对解决方案的第一个假设是使用来自设备系统的日期值的组合(一年中的一天、一个月中的一天、一周中的一天等),因为这些对于每个用户来说都是相同的。我不能使用小时、分钟或秒,因为这 13 个值需要在一整天内保持不变(它们只会在第二天更改,具体取决于设备系统)。

我很想读你的想法。

谢谢

编辑:如果时区之间的值不同,没关系。

4

2 回答 2

2

常用的数字Random伪随机数。这意味着对于给定的种子,它们是可预测的。您可以将种子设置为自某个时间点以来的天数。例如,自1970 年 1 月 1 日起。然后取 13 个伪随机值。在那一天,它们在所有设备上都是一样的。第二天,你Random用种子 + 1 创建另一个,取 13 个伪随机值,依此类推。

于 2013-02-26T11:33:12.193 回答
0

您认为可能是最直接的方法。对于大多数事情来说,一个简单的种子就可以了。

Calendar cal = new GregorianCalendar(); 
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long seed = cal.getTime().getTime();
于 2013-02-26T11:51:15.177 回答