随机数生成器java实现
/**
设计一个随机数生成器,可以产生给定平均概率的随机证书序列。
即输入一个概率比如: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源码看线性同余算法
Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术 ...
- java随机数生成器
一.java.lang.Math.Random 调用这个Math.Random()函数能够返回带正号的double值,取值范围是[0.0,1.0)的左闭右开区间,并在该范围内(近似)均匀分布. 二.j ...
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom(转)
文中的 Random即:java.util.Random,ThreadLocalRandom 即:java.util.concurrent.ThreadLocalRandomSecureRandom即 ...
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom 文中的 Random即:java.util.Random,ThreadLocalRandom 即: ...
- [转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp84 Random即:java.util.Random, ThreadL ...
- 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 【BZOJ-3122】随机数生成器 BSGS
3122: [Sdoi2013]随机数生成器 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1362 Solved: 531[Submit][Sta ...
- BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘
题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...
- [BZOJ3671][UOJ#6][NOI2014]随机数生成器
[BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ...
随机推荐
- codeforces round 472(DIV2)D Riverside Curio题解(思维题)
题目传送门:http://codeforces.com/contest/957/problem/D 题意大致是这样的:有一个水池,每天都有一个水位(一个整数).每天都会在这一天的水位上划线(如果这个水 ...
- myeclipse 上安装 Maven
myeclipse 上安装 Maven3 环境准备: JDK 1.6 Maven 3.0.4 myeclipse 8.6.1 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Mav ...
- python模块之calendar方法详细介绍
calendar,是与日历相关的模块.calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型.其中,Calendar是TextCal ...
- 使用open live writer客户端写博客(亲测有效)
博客都开了这么久了,才开始将资料上传,但是每次都要登录网页确实很麻烦,所以就用open live writer,使用起来真的是挺方便的,所以将我在安装配置时,发现的问题汇总起来以便日后再次碰到忘记怎么 ...
- springmvc之Hello World及常用注解
步骤: 加入jar包 在web.xml 中配置DispacherServlet 加入SpringMVC 配置文件springmvc.xml 编写请求处理器(action/controller) 编写视 ...
- ElasticSearch 处理自然语言流程
ES处理人类语言 ElasticSearch提供了很多的语言分析器,这些分析器承担以下四种角色: 文本拆分为单词 The quick brown foxes → [ The, quick, brown ...
- Mongodb简介及基本操作
一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性 ...
- aapt.exe finished with non-zero exit value 1
在一个APP 中导入 严振杰的 ALBUM,出现错误 在网上找了各种,最后在 stackoverflow上找到这样的说法: -Go to File->project structure-> ...
- bootstrapValidator 如何重新启用提交按钮
bootstrapValidator 使用中,由于字段检查等原因,致使提交按钮失效.如何重新启用提交按钮呢? 下面一句代码可以实现启用提交按钮: $('#loginForm').bootstrapVa ...
- rem媒体查询
@media only screen and (min-width: 1080px), only screen and (min-device-width:1080px) { html,body { ...