Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best way to create a random value?

Tags:

java

random

I am triying to create random value for my game to show enemies on screen. BUt it some times shows 2 together some times 3 ...I want to ask that which is the best formul for creating random value.. This is my so far random value

 random = 1 * (int) (Math.random() * 100);
like image 960
Ercan Avatar asked Dec 03 '25 10:12

Ercan


2 Answers

"BUt it some times shows 2 together some times 3"

Given perfectly random numbers... In every 100 random values from 0 to 99, you'll find an average of 1.0 doubles. A triple will occur on average once for every 10,000 values. Given 10 million random numbers, java.util.Random yeilds the following results on my machine:

Doubles: 99873
Triples: 985

Double Rate: 1 in 100
Triple Rate: 1 in 10152

Source code:

import static java.lang.System.*;

import java.util.Random;

public class Sandbox {
    public static final int NUM_ITERATIONS = 10000000;
    public static void main(String[] args) {
        Random rand = new Random();

        int cur;
        int last = -1;
        int secondLast = -2;
        int nDoubles = 0;
        int nTriples = 0;

        for (int i = 0; i < NUM_ITERATIONS; i++) {
            cur = rand.nextInt(100);
            if (cur == last) {
                nDoubles++;
                if (cur == secondLast) nTriples++;
            }
            secondLast = last;
            last = cur;
        }

        out.println("Doubles: " + nDoubles);
        out.println("Triples: " + nTriples);
        out.println();
        out.println("Double Rate: 1 in " + Math.round(1.0 * NUM_ITERATIONS / nDoubles));
        out.println("Triple Rate: 1 in " + Math.round(1.0 * NUM_ITERATIONS / nTriples));

        exit(0);
    }
}
like image 191
Gunslinger47 Avatar answered Dec 04 '25 23:12

Gunslinger47


What you use if perfectly fine.

In case you want something simplier you might like to use Random class like this:

Random generator = new Random(seed);
int number = generator.nextInt(100);
like image 23
pajton Avatar answered Dec 04 '25 22:12

pajton



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!