Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Pseudorandom integer sequence having at least 15 adjacent differences > 36

  1. May 29, 2010 #1
    The requirement is to find an pseudorandom integer sequence i0, i1, i2, i3, ... , i48, i49 so that there are at least 15 adjacent differences which are greater than 36.
    Code (Text):

    Adjacent difference = absolute value of the difference between two adjacent integers
    = |i  - i   |  where j = 0 to 49
      | j -  j+1|
    and
     i  =  an integer in the range of [1, 2, 3, ..., 50]
      j
    = an integer in the range of [1, 2, 3, ..., 50]

    e.g.
    For this integer sequence (very poor in randomness)
    1 39 2 40 3 41 4 42 5 43 6 44 7 45 8 46 9 47 10 48 11 49 12 50 13 26 14 27 15 28 16 29 17 30 18 31 19 32 20 33 21 34 22 35 23 36 24 37 25 38


    i0 = 1
    i1 = 39
    i2 = 2
    i3 = 40
    i4 = 3
    ...
    i47 = 37
    i48 = 25
    i49 = 38

    Adjacent difference
    |i0 - i1| = |1 - 39| = 38
    |i1 - i2| = |39 - 2| = 37
    |i2 - i3| = |2 - 40| = 38
    |i3 - i4| = |40 - 3| = 37
    ...
    |i23 - i24| = |50 - 13| = 37
    |i24 - i25| = |13 - 26| = 13
    ...
    |i46 - i47| = |24 - 37| = 13
    |i47 - i48| = |37 - 25| = 12
    |i48 - i49| = |25 - 38| = 13

    There are 24 adjacent differences which are greater than 36.
    Is there an algorithm to find an pseudorandom integer sequence which meet the requirement?
    One algorithm I can think of is:
    1. Create a not-random integer sequence which has at least 15 adjacent differences which are greater than 36.
    e.g. the above integer sequence alternates between a small and large integer
    2. Randomlly select two odd-indexed integer.
    If swapping them still meet the requirement, then swap them
    3. Randomlly select two even-indexed integer.
    If swapping them still meet the requirement, then swap them
    4. Repeat steps 2 and 3 many times

    I will write a computer program to implement this.
    Please comment or suggest a better algorithm.
     
    Last edited: May 29, 2010
  2. jcsd
  3. Jun 21, 2010 #2
    I suggest the following:
    1. Choose 50 numbers at random.
    2.Pick up any 15 of them at random & add 36 to each of them.
    This ensures the size of the difference, keeping as much randomness as possible.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Pseudorandom integer sequence having at least 15 adjacent differences > 36
Loading...