2011-10-24 7 views
2

ランダムジェネレータを使って簡単な加算シーケンスを設定しようとしています。番号はintでなければなりません。 これは私が達成しようとしているものの例です:ランダム生成器を使ってシンプルな加算シーケンスを設定しようとしています

(4,10,16,22,28、?):ユーザーはシーケンス内の次の番号を入力する必要があります。 (各数字は6つの数字が離れているため34です)

ユーザにはジェネレータからランダムな番号が与えられますが、隣の2つの数字は次の二。例:= 6 10-4、= 6 16-10、22-16 = 6

private static void simpleAdditionSequence() { 
    int num1, num2, num3, num4, num5, numUser; 
    Random generator = new Random(); 

    num1 = generator.nextInt(2147483647); 
    System.out.println(num1); 
} 

私がいる問題は、NUM2を作成する方法を考え出すされています。私が別のジェネレータを使用している場合、それはnum1よりも小さくなる可能性があり、残りの数字と同じ距離だけ離れている必要があります。

(注 - 私はので、私は整数の乱数を生成することができます2147483647を使用し、あなたの問題で

+0

大まかには、SOの質問にはタイトルに「[解決済み]」と表示されませんが、最善の回答を受け入れる必要があります。 – brc

+1

@ MJ93:2つのマイナーなニックネ... Javaの書き込みで* Integer.MAX_VALUE *はエラーが起こりにくく、 "2147483647" *を書くよりも "インテント"をよりよく伝えます。次に* nextInt(Integer.MAX_VALUE)*を使ってステップを選ぶことを主張すれば、実際に* long *を使用して問題を解決したいと思うでしょう。* int *を使った解決策は、 int *あなたはすぐに "折り返し"負の値を扱うでしょう)。 – TacticalCoder

+0

ありがとう、私は整数値を使用する必要はないことを学んだ、私は何かのようなものに制限としてそれを設定することができます:100しかし、それは知って良いです。 – MJ93

答えて

3

2つだけの数字が実際にランダムある - 。最初の数と数の差を

2を生成します。ランダム整数;ベースのための1つのステップのための1、およびコンテンツで

(一つのことをするために外を見るために - あなたは今まで乱数生成器を作成する必要があります私。あなたのプログラム。乱数を必要とするたびにそのジェネレータを再利用してください。新しい乱数を必要とするたびに新しいジェネレーターを作成すると、数字にはランダム性がありません。

+0

あなたが投稿する前に私はそれを理解しました。あなたが言ったように、私の最初の数字とそれらの違いは唯一のランダムです。私はちょうど差に最初の数字を追加することができます。 – MJ93

-1

まず、nextInt()はintデータ型のみを返します。

第2に、あなたが最終的に生成しているパターンであれば、最初の数字だけを生成し、次にそれと2番目の数字を差し引いて残りの数字を自分で計算する必要があります。あなたの例を使用するには:

num1 = generator.nextInt(2147483647);は、変数num1に番号4を格納します。次に、ランダムな増分値を生成します。nextInt()メソッドを再度呼び出すと、increment変数に6が格納されます。次に:

num2 = num1 + increment; // 4 + 6 = 10 
num3 = num2 + increment; // 10 + 6 = 16 
// Etc... 
関連する問題