当前位置:首页 > 后端开发 > 随机数生成器java实现

随机数生成器java实现

6个月前 (05-27)41

/**

设计一个随机数生成器,可以产生给定平均概率的随机证书序列。

即输入一个概率比如:0.9

然后输入要求的概率样本个数比如:1000

输出一个接近所输入的0.9的概率数(要求样本数越大越接近输入的概率)

*/

import java.util.Date;
import java.util.Scanner;

public class Random {
private int seed;
private int multiplier = 2743;
private int addOn = 5923;
public Random(boolean pseudo){
if(pseudo){
this.seed = 1;
}else{
seed = (int)(new Date().getTime()%Integer.MAX_VALUE);
}
}
public double randomReal(){
double max = Integer.MAX_VALUE + 1.0;
double temp = reseed();
if(temp < 0) {
temp = temp + max;
}

return temp/max;
}
public int randomInteger(int low, int high){
if(low>high){
return randomInteger(high,low);
}else{
return ((int)((high-low) * randomReal())) + low;
}
}
public int poisson(double mean){
double limit = Math.exp(mean * -1);
double product = randomReal();
int count = 0;
while(product > limit){
count ++;
product = product * randomReal();
}

return count;
}

private int reseed(){
this.seed = seed*multiplier+addOn;
return this.seed;
}
}

class MainApplication{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入概率平均值:");
double mean = scanner.nextDouble();
System.out.println("请输入产生随机整数的个数:");
int count = scanner.nextInt();

Random random = new Random(false);
int sum =0;
System.out.println("产生随机整数序列");
for(int i=0; i<count; i++){
int num = random.poisson(mean);
sum += num;
System.out.print(num + " ");

if((i+1)%40 == 0){
System.out.println();
}
}

System.out.println();
System.out.println("随机整数序列平均值是:" + sum*1.0/count);
}
}

//测试两组数据

//第一组:

随机数生成器java实现 _ Java侠

//第二组:

随机数生成器java实现 _ Java侠

 

作者:初仰
来源链接:https://www.cnblogs.com/cdlyy/p/10200868.html

标签: Java随机数

“随机数生成器java实现” 的相关文章

JAVA随机数之多种方法从给定范围内随机N个不重复数

JAVA随机数之多种方法从给定范围内随机N个不重复数

一、JAVA中生成随机数的方式        1、在j2...

Java基础——生成随机数

Math.random() Math.random()方法会产生0到1之间的浮点数。 可以使用以下方法产生0到N的正整数: int ra...

Java 不重复的随机数

思路 1、创建Set集合对象 2、创建随机数对象 3、判断集合长度是否小于10 4、遍历集合 代码示例 import java.util...

java时间随机数

(1)生成随机数: java中Math类中有个方法random()用于生成0.0-1.0之间的双精度小数。但有时我们需要生成更多范围内的随机数,怎么办呢?其...

java怎么把随机数放入数组

import java.util.Random; public class SuiJiShu { public static void m...

Java中利用Math.random()产生服从泊松分布的随机数

众所周知。Java的Math.random()产生的是服从均匀分布的随机数,可是其它分布的应用也相当广泛,比如泊松分布和高斯分布(正态分布)。而这些分布Java没有非常...

java 概率生成随机数

由于项目工作需求,需要一种随机数生成的法,可自定义概率和长度。遍观网上各大平台,无法找到满足需求的方法,于是动手自己写了一个实现类。手拙,望批评建议。 1、...

[转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

[转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom

 详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp84...

生成0-10的随机数(Java)

生成0-10的随机数(Java)

首先用import 来导包,导入随机数的种子。 new出随机数的对象Random变量名位random。 实现随机数对象用变量i表示。 输出变量i。...