对于所有善于操纵随机化的人来说,这是一个问题。我在Android上制作应用程序。对于这个应用程序,我需要生成具有以下条件的随机值:
我需要生成13个随机值
我需要每天获取这13个随机值的新集合(基于用户设备的系统)。在一整天中,这13个值不得改变。
我需要在本地生成这些值,即用户无法连接到互联网以获取在线价值。
现在困难的部分:我需要这些值每天都是“唯一的”:用户1得到的13个随机值必须与用户2得到的13个值相同。
每个值都有自己的范围(有些是[1-100],有些是[1-40])
我对该解决方案的第一个假设是使用来自设备系统的日期值的组合(一年中的一天,一个月中的一天,一周中的一天等),因为这些对于每个用户都是相同的。我不能使用小时,分钟或秒,因为13个值需要保持一整天(它们仅在第二天根据设备系统更改)。
我很想读你的想法。
由于
编辑:如果时区之间的值不同,则可以。
答案 0 :(得分:2)
常用Random
的数字为pseudorandom。这意味着它们对于给定的种子是可预测的。您可以将种子设置为等于某个时间点的天数。例如,自1 January 1970以来。然后取13个伪随机值。那天他们在所有设备上都是一样的。第二天,您使用种子+ 1创建另一个Random
,获取13个伪随机值,依此类推。
答案 1 :(得分: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();