1、请编写函数foo(int x, int y, int n) 计算:随机生成x个大小为[1,y]的正整数,它们的和为n的概率是多少?语言仅限于PHP、C/C++、Java中的一种。
2010-10-01 20:04
816 查看
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;
/*
* 创建日期 2010-10-1
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author zhchyun
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class foo {
public static void main(String[] args) throws IOException {
int x;//输入x的值
int y ;//输入y的值
int n ;//输入n的值
int sum=0;//x个y的和
int count=1;//y的x幂,和出现的情况
Random rand=new Random();//随机生成数
double gailv;//计算概率
System.out.println("请输入x的值");
Scanner sc=new Scanner(System.in);
x=(int)sc.nextInt();
System.out.println("请输入y的值");
y=sc.nextInt() ;
System.out.println("请输入n的值");
n=sc.nextInt() ;
int xx[]=new int[x];
for (int i=0;i<xx.length ;i++){
xx[i]=rand.nextInt(y)+1;
System.out.println("xx["+i+"]:"+xx[i]);
sum=sum+xx[i];
}
for (int i=0;i<x;i++){
count*=y;
}
System.out.println(count);
gailv=(double)1.0/count;
System.out.println(x+"个数的和为:"+sum);
/* 下面是划分情况
1.根据输入n的值划为[-∞,0],[1,x*y](x*y,+∞]
2.考虑到x=1时,是1个[1,y]数的和为y,概率为1/y
3.考虑到y=1时,是x个1的和为x,概率为1/x
*/
if(n<0)
System.out.println(n+"为负数概率为0");
else if (n>x*y)
System.out.println(n+"大于等于"+x*y+"概率为0");
else if (x==1)
System.out.println(n+"等于"+x*y+"概率为"+1.0/y);
else if (n>=1 && n<=x*y && x!=1 && y!=1)
System.out.println("随机生成数和为"+n+"的概率为"+gailv);
else if (y==1)
System.out.println(x+"个"+"[1,"+"y]"+"数"+"随机生成数和为"+n+"的概率为"+1.0/x);
}
}
import java.util.Random;
import java.util.Scanner;
/*
* 创建日期 2010-10-1
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author zhchyun
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class foo {
public static void main(String[] args) throws IOException {
int x;//输入x的值
int y ;//输入y的值
int n ;//输入n的值
int sum=0;//x个y的和
int count=1;//y的x幂,和出现的情况
Random rand=new Random();//随机生成数
double gailv;//计算概率
System.out.println("请输入x的值");
Scanner sc=new Scanner(System.in);
x=(int)sc.nextInt();
System.out.println("请输入y的值");
y=sc.nextInt() ;
System.out.println("请输入n的值");
n=sc.nextInt() ;
int xx[]=new int[x];
for (int i=0;i<xx.length ;i++){
xx[i]=rand.nextInt(y)+1;
System.out.println("xx["+i+"]:"+xx[i]);
sum=sum+xx[i];
}
for (int i=0;i<x;i++){
count*=y;
}
System.out.println(count);
gailv=(double)1.0/count;
System.out.println(x+"个数的和为:"+sum);
/* 下面是划分情况
1.根据输入n的值划为[-∞,0],[1,x*y](x*y,+∞]
2.考虑到x=1时,是1个[1,y]数的和为y,概率为1/y
3.考虑到y=1时,是x个1的和为x,概率为1/x
*/
if(n<0)
System.out.println(n+"为负数概率为0");
else if (n>x*y)
System.out.println(n+"大于等于"+x*y+"概率为0");
else if (x==1)
System.out.println(n+"等于"+x*y+"概率为"+1.0/y);
else if (n>=1 && n<=x*y && x!=1 && y!=1)
System.out.println("随机生成数和为"+n+"的概率为"+gailv);
else if (y==1)
System.out.println(x+"个"+"[1,"+"y]"+"数"+"随机生成数和为"+n+"的概率为"+1.0/x);
}
}
相关文章推荐
- 写一个函数,随机地从大小为n的数组中选取m个整数。要求每个元素被选中的概率相等。
- Java C++ Python PHP JS等各种语言中的INT最值
- 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数(均匀概率问题)
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 编写一个函数fan(int m),计算任一输入的整数的各位数字之和。
- 实现c++,java,lua 在c++编写后需要在 pkg 文件中添加新的函数 然后批处理下生成GamePlatformToLua
- 程序员面试金典——解题总结: 9.18高难度题 18.3编写一个方法,从大小为n的数组中随机选出m个整数。要求每个元素被选中的概率相同。
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 用Int和Rnd函数生成指定范围的随机整数
- 用Int和Rnd函数生成指定范围的随机整数
- 用C++编写递归函数GetPower(int x,int y)计算x的y次幂,在同一程序里中针对整型和实型实现两个重载的函数;在主程序中实现输入输出
- 有一个整数数组,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,也就是说,找出符合条件的最短序列。 给定一个int数组A和数组的大小n,请
- 【转】给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 利用doxygen生成说明文档(支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#)
- 给定一个函数rand5(),使函数rand7()可以随机等概率的生成1-7的整数
- 【Java每日一题01】使用java.lang.Math类,生成100个0到99之间的随机整数,找出它们之中的最大者和最小者,并统计大于50的整数个数
- JAVA基础:随机整数的生成
- 六种流行的语言---C、C++、python、Java、php、C#比较[转]