Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不使用数学,我如何生成一个随机数?_Java_Random - Fatal编程技术网

Java 不使用数学,我如何生成一个随机数?

Java 不使用数学,我如何生成一个随机数?,java,random,Java,Random,我的项目需要我创建一个基本的数字猜测游戏,它使用JOptionPane,而不使用Math.Random来创建随机值。你打算怎么做?除了随机数发生器,我已经完成了一切。谢谢 如果你不喜欢数学,你可以随意制作你自己的对象 进口: import java.util.Random; 代码: 如果您需要其他类型而不是int,Random将为boolean、double、float、long和byte提供方法。您可以使用。它有更好的熵 还有,是书中的代码。它使用与java.util.Random相同的算法

我的项目需要我创建一个基本的数字猜测游戏,它使用JOptionPane,而不使用Math.Random来创建随机值。你打算怎么做?除了随机数发生器,我已经完成了一切。谢谢

如果你不喜欢数学,你可以随意制作你自己的对象

进口:

import java.util.Random;
代码:

如果您需要其他类型而不是int,Random将为boolean、double、float、long和byte提供方法。

您可以使用。它有更好的熵


还有,是书中的代码。它使用与java.util.Random相同的算法。

这里是一个简单随机生成器的代码:

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;
}
}
公共类SimpleRandom{
/**
*测试代码
*/
公共静态void main(字符串[]args){
SimpleRandom rand=新的SimpleRandom(10);
对于(int i=0;i<25;i++){
System.out.println(rand.nextInt());
}
}
私人int max;
私家车;
//取最大int的构造函数
公共SimpleRandom(int max){
this.max=max;
last=(int)(System.currentTimeMillis()%max);
}
//请注意,结果不能大于32749
public int nextInt(){
last=(last*32719+3)%32749;
返回最后%max;
}
}
上面的代码是一个“线性同余生成器(LCG)”,你可以找到一个很好的描述

Disclamer:

上面的代码仅用于研究,而不是作为参考 替换为随机库存或随机库存


在JavaScript中使用中间方块方法

var _seed = 1234;
function middleSquare(seed){
    _seed = (seed)?seed:_seed;
    var sq = (_seed * _seed) + '';
    _seed = parseInt(sq.substring(0,4));
    return parseFloat('0.' + _seed);
}

什么编程语言?Java?使用
Random
类,哈哈。我为这篇文章写了一篇新文章:这通常很好,但我的教授要求我们不要使用任何给定的Java方法。他希望我们创建自己的随机数生成器,可以将范围限制为指定值。谢谢你!里面有什么神奇的数字?32719、3和32749?我只是想弄清楚逻辑是如何运作的——很明显是这样的。:)只有2个“大”素数,我需要一直增加我的最后一个值,但要保持在一定的范围内。还要注意的是,如果你要求的数字大于32749,这个素数生成器将失败,但我认为OP不希望这么大。
var _seed = 1234;
function middleSquare(seed){
    _seed = (seed)?seed:_seed;
    var sq = (_seed * _seed) + '';
    _seed = parseInt(sq.substring(0,4));
    return parseFloat('0.' + _seed);
}