1

これは、ランダム化の操作が得意なすべての人にとっての質問です。Androidでアプリを作っています。このアプリでは、次の条件でランダムな値を生成する必要があります。

  • 13個のランダムな値を生成する必要があります

  • これらの13個のランダムな値の新しいセットを毎日取得する必要があります(ユーザーのデバイスのシステムに基づく)。1日中、これらの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 に答える