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 Kotlin

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.
*/

import kotlin.random.Random

// ---------------------------------------------------------------
// Build a frequency map: value -> count
// ---------------------------------------------------------------
fun buildFrequencyMap(data: IntArray): Map<Int, Int> {
    // groupingBy is defined on Iterable, so we convert IntArray to List<Int>
    return data.toList().groupingBy { it }.eachCount()
}

// ---------------------------------------------------------------
// Collect values that appear exactly once
// ---------------------------------------------------------------
fun collectUniqueValues(data: IntArray, freq: Map<Int, Int>): List<Int> {
    return data.filter { value -> freq[value] == 1 }
}

// ---------------------------------------------------------------
// Randomly select N values from the unique list
// ---------------------------------------------------------------
fun selectRandomUnique(unique: List<Int>, n: Int): List<Int> {
    val limit = minOf(n, unique.size)   // clamp N

    return unique.shuffled(Random).take(limit)
}

// ---------------------------------------------------------------
// Print helper
// ---------------------------------------------------------------
fun printValues(values: List<Int>) {
    println(values.joinToString(" "))
}

// ---------------------------------------------------------------
// Main program
// ---------------------------------------------------------------
fun main() {

    val data = intArrayOf(
        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
    val freq = buildFrequencyMap(data)

    // Step 2: Collect values that appear exactly once
    val uniqueValues = collectUniqueValues(data, freq)

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

    // Step 4: Select N random unique values
    val randomSelection = selectRandomUnique(uniqueValues, n)

    // Step 5: Print results
    println("Values that appear exactly once:")
    printValues(uniqueValues)

    println("\nRandom selection ($n values):")
    printValues(randomSelection)
}



/*
run:

Values that appear exactly once:
12 33 59 61 17 74 83 90 1

Random selection (5 values):
17 74 90 1 83

*/

 



answered 4 days ago by avibootz

Related questions

...