Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Create your online store today with Shopify

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Disclosure: My content contains affiliate links.

43,181 questions

56,073 answers

573 users

How to select N unique random values that appear exactly once in an existing array with Ruby

1 Answer

0 votes
#
# Goal:
# - Select N random values that appear exactly once in the array.
# - Values must be globally unique (appear only once in the entire array).
# - Return the selected values from a function and print them.
#

#---------------------------------------------------------------
# Build a frequency map: value -> count
#---------------------------------------------------------------
def build_frequency_map(data)
  # tally returns a Hash: value => count
  data.tally
end

#---------------------------------------------------------------
# Collect values that appear exactly once
#---------------------------------------------------------------
def collect_unique_values(data, freq)
  # Select only values whose frequency is exactly 1
  data.select { |value| freq[value] == 1 }
end

#---------------------------------------------------------------
# Randomly select N values from the unique array
#---------------------------------------------------------------
def select_random_unique(unique, n)
  # Clamp n to available unique values
  n = [n, unique.length].min

  # Shuffle and take first n elements
  unique.shuffle.take(n)
end

#---------------------------------------------------------------
# Print helper
#---------------------------------------------------------------
def print_values(values)
  puts values.join(" ")
end

#---------------------------------------------------------------
# Main program
#---------------------------------------------------------------
data = [
  5, 12, 5, 19, 5, 33, 19, 5, 8, 8, 8, 59, 61, 17, 3, 5, 3, 74, 83, 90, 3, 1
]

# Step 1: Build frequency map
freq = build_frequency_map(data)

# Step 2: Collect values that appear exactly once
unique_values = collect_unique_values(data, freq)

# Step 3: Choose how many unique random values to select
n = 5

# Step 4: Select N random unique values
random_selection = select_random_unique(unique_values, n)

# Step 5: Print results
puts "Values that appear exactly once:"
print_values(unique_values)

puts "\nRandom selection (#{n} values):"
print_values(random_selection)



#
# run:
#
# Values that appear exactly once:
# 12 33 59 61 17 74 83 90 1
#
# Random selection (5 values):
# 90 59 83 12 17
#

 



answered 4 days ago by avibootz

Related questions

...