Generating Random Numbers with Weights in Java

Random number generation with weighted probabilities is a common requirement in various programming scenarios, such as game development, statistical sampling, and machine learning algorithms. Java provides several approaches to accomplish this task efficiently.

in this tutorial To generate random values with weights in Java, you can use a weighted random selection technique. Here’s a simple example:

Here is the Example

import java.util.HashMap;
import java.util.Map;
import java.util.Random;


public class Ex1 {
    public static void main(String[] args) {
        // Define items and their weights
        Map<String, Integer> items = new HashMap<>();
        items.put("Apple", 5);   // Weight for Apple
        items.put("Banana", 1);  // Weight for Banana
        items.put("Cherry", 3);  // Weight for Cherry

        // Generate weighted random selections
        for (int i = 0; i < 10; i++) {
            String randomItem = getRandomItem(items);
            System.out.println(randomItem);
        }
    }

    public static String getRandomItem(Map<String, Integer> items) {
        // Calculate the total weight
        int totalWeight = items.values().stream().mapToInt(Integer::intValue).sum();

        // Generate a random number in the range of 0 to totalWeight
        int randomValue = new Random().nextInt(totalWeight);

        // Iterate through the items and subtract weights to find the selected item
        for (Map.Entry<String, Integer> entry : items.entrySet()) {
            randomValue -= entry.getValue();
            if (randomValue < 0) {
                return entry.getKey();
            }
        }

        throw new RuntimeException("Should never reach here if weights are correctly defined.");
    }
}
  • Weights: Each item is assigned a weight. Higher weights mean the item is more likely to be selected.
  • Total Weight: Sum of all weights is calculated.
  • Random Value: A random number is generated between 0 and the total weight.
  • Selection: The method iterates through the items and subtracts their weights from the random value until it finds the selected item.

 

admin

Share
Published by
admin
Tags: java

Recent Posts

Registration with image upload Java Jdbc(Download Source code)

Introduction In this section, we will guide you step by step in the development of an image upload registration system in Java using MySQL and JDBC. In the application, users register…

1 week ago

Touchable shop Pos system using Java

The Touchable Shop POS (Point of Sale) system is a sophisticated software solution developed using…

4 weeks ago

Build Your First Responsive Login Form Using HTML and CSS FlexBox

Creating a responsive login form is a crucial skill for any web developer. In this…

1 month ago

Build Crud API with Laravel 12

In this tutorial will teach  Laravel 12 CRUD API  by step. Laravel  10 CRUD Application …

1 month ago

laravel 12 image upload tutorial

In this lesson we talk about laravel 12 image uploading and display the image step…

1 month ago

Laravel 12 CRUD Application

In this tutorial will teach Laravel 12 CRUD Application step by step. Laravel  12 CRUD…

1 month ago