Skip to content

Instantly share code, notes, and snippets.

@FranckyU
Last active August 29, 2015 14:11
Show Gist options
  • Select an option

  • Save FranckyU/6c7a9f5a920d1bd3df93 to your computer and use it in GitHub Desktop.

Select an option

Save FranckyU/6c7a9f5a920d1bd3df93 to your computer and use it in GitHub Desktop.

Revisions

  1. FranckyU renamed this gist Dec 15, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. FranckyU revised this gist Dec 15, 2014. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions bitwise_random.rb
    Original file line number Diff line number Diff line change
    @@ -3,19 +3,19 @@

    num_bit_1_left = (seed == 0b1) ? n-1 : n

    number_bit_length = 1
    bits_length = 1

    (m-1).times do
    bit_mask = if num_bit_1_left > 0
    ((m - number_bit_length) > num_bit_1_left) ? ((rand(2).even?) ? 0b0 : 0b1) : 0b1
    ((m - bits_length) > num_bit_1_left) ? ((rand(2).even?) ? 0b0 : 0b1) : 0b1
    else
    0b0
    end

    seed = (seed << 1) | (bit_mask >> number_bit_length) # ETO NO TENA RESAKA BITWISE
    seed = (seed << 1) | (bit_mask >> bits_length) # ETO NO TENA RESAKA BITWISE

    num_bit_1_left -= 1 if bit_mask == 0b1
    number_bit_length += 1
    bits_length += 1
    end

    seed
  3. FranckyU revised this gist Dec 15, 2014. 1 changed file with 2 additions and 5 deletions.
    7 changes: 2 additions & 5 deletions bitwise_random.rb
    Original file line number Diff line number Diff line change
    @@ -6,18 +6,15 @@
    number_bit_length = 1

    (m-1).times do
    seed = seed << 1

    bit_mask = if num_bit_1_left > 0
    ((m - number_bit_length) > num_bit_1_left) ? ((rand(2).even?) ? 0b0 : 0b1) : 0b1
    else
    0b0
    end

    num_bit_1_left -= 1 if bit_mask == 0b1

    seed = seed | (bit_mask >> number_bit_length)
    seed = (seed << 1) | (bit_mask >> number_bit_length) # ETO NO TENA RESAKA BITWISE

    num_bit_1_left -= 1 if bit_mask == 0b1
    number_bit_length += 1
    end

  4. FranckyU created this gist Dec 15, 2014.
    25 changes: 25 additions & 0 deletions bitwise_random.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    lambda(m, n) do
    seed = (rand(2).even?) ? 0b0 : 0b1

    num_bit_1_left = (seed == 0b1) ? n-1 : n

    number_bit_length = 1

    (m-1).times do
    seed = seed << 1

    bit_mask = if num_bit_1_left > 0
    ((m - number_bit_length) > num_bit_1_left) ? ((rand(2).even?) ? 0b0 : 0b1) : 0b1
    else
    0b0
    end

    num_bit_1_left -= 1 if bit_mask == 0b1

    seed = seed | (bit_mask >> number_bit_length)

    number_bit_length += 1
    end

    seed
    end.call(m_value, n_value)