How can I generate a random number without use of

2020-07-06 06:16发布

My project entails that I create a basic number guessing game that uses the JOptionPane and does not use Math.Random to create the random value. How would you go about doing this? I've completed everything except the random number generator. Thanks!

标签: java random
4条回答
甜甜的少女心
2楼-- · 2020-07-06 06:45

Here the code for a Simple random generator:

public class SimpleRandom {
/**
 * Test code
 */
public static void main(String[] args) {
    SimpleRandom rand = new SimpleRandom(10);
    for (int i = 0; i < 25; i++) {
        System.out.println(rand.nextInt());
    }

}

private int max;
private int last;

// constructor that takes the max int
public SimpleRandom(int max){
    this.max = max;
    last = (int) (System.currentTimeMillis() % max);
}

// Note that the result can not be bigger then 32749
public int nextInt(){
    last = (last * 32719 + 3) % 32749;
    return last % max;
}
}

The code above is a "Linear congruential generator (LCG)", you can find a good description of how it works here.

Disclamer:

The code above is designed to be used for research only, and not as a replacement to the stock Random or SecureRandom.

查看更多
走好不送
3楼-- · 2020-07-06 06:56

In JavaScript using the Middle-square method.

var _seed = 1234;
function middleSquare(seed){
    _seed = (seed)?seed:_seed;
    var sq = (_seed * _seed) + '';
    _seed = parseInt(sq.substring(0,4));
    return parseFloat('0.' + _seed);
}
查看更多
▲ chillily
4楼-- · 2020-07-06 06:58

You could use java.security.SecureRandom. It has better entropy.

Also, here is code from the book Data Structures and Algorithm Analysis in Java. It uses the same algorithm as java.util.Random.

查看更多
何必那么认真
5楼-- · 2020-07-06 07:04

If you don't like the Math.Random you can make your own Random object.

import:

import java.util.Random;

code:

Random rand = new Random();
int value = rand.nextInt();

If you need other types instead of int, Random will provide methods for boolean, double, float, long, byte.

查看更多
登录 后发表回答