Created
July 1, 2011 16:36
-
-
Save jfcalvo/1058882 to your computer and use it in GitHub Desktop.
A simple function to generate random chromosome strings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 54.73 seconds generating 10.000.000 chromosomes | |
def generate_chromosome_1(length, alleles) | |
(1..length).collect { alleles[rand(alleles.size)] }.join | |
end | |
# 49.15 seconds generating 10.000.000 chromosomes | |
def generate_chromosome_2(length, alleles) | |
chromosome = String.new | |
for i in 1..length | |
chromosome += alleles[rand(alleles.size)] | |
end | |
return chromosome | |
end | |
# 47.83 second generating 10.000.000 chromosomes | |
def generate_chromosome_3(length, alleles) | |
chromosome = String.new | |
length.times do | |
chromosome += alleles[rand(alleles.size)] | |
end | |
return chromosome | |
end | |
def measure_time(repeat) | |
start = Time.now | |
repeat.times { yield } | |
puts "Took #{Time.now - start} seconds, repeating #{repeat} times." | |
end | |
repeat = 10000000 | |
puts "Using generate_chromosome_1:" | |
measure_time(repeat) { generate_chromosome_1 8, "01" } | |
puts "Using generate_chromosome_2:" | |
measure_time(repeat) { generate_chromosome_2 8, "01" } | |
puts "Using generate_chromosome_3:" | |
measure_time(repeat) { generate_chromosome_3 8, "01" } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Muy buena caballero. La primera es muy original, lenta pero original :) He hecho un fork de tu gist (https://gist.github.com/1059231) y he modificado algunas cosas: