A. java:怎样产生1~6的随机数,并使1~4产生的概率大一些呢
用概率模型,先随机一次看取用哪个概率,随后再随机一次。代码示例如下:
importjava.util.Random;
publicclassHelloWorld{
publicstaticvoidmain(String[]args)
{
Randomrandom=newRandom();
doublep1=0.7;//1~4的概率
doublep=(((int)random.nextInt(10)%(10)+1)*1.0/10<p1)?p1:(1-p1);//实际所取概率
intmax=(p==p1)?4:6;
intnum=(int)random.nextInt(max)%(max)+1;
System.out.print(num);
}
}
B. java中如何编写输出一组由大写和数字组成的6个随机验证码,字母O和I不能输出
importjava.util.Random;
publicclassTest{
publicstaticvoidmain(String[]args){
charc='i';
StringBuffersb=newStringBuffer();
for(inti=0;i<6;i++){
inta=Math.abs((newRandom()).nextInt(57));//产生0~57的随机数
if(a<=9){//将0~9转为char的0~9
sb.append((char)(a+48));
}elseif(a<33){//将10~33转为char的A~Z
if((a+55)==79||(a+55)==73){
sb.append((char)(a+63));
}else{
sb.append((char)(a+55));
}
}else{//将33~57转为char的a~z
sb.append((char)(a+63));
}
}
System.out.println("随机生成的6位密码为:"+sb.toString());
}
}
C. 关于Java里产生1-6随机数的方法
我认为2种方法产生的1~6的几率是相等的,都为1/6.
第一种(int)(Math.random()*10)%6得到0~6的随机数,每个数的产生的概率为1/7,再加上1,得到1~6的随机数,0不再出现,每个数产生的几率1/6.
另一种(int)(Math.random()*6)产生0~5,每个数产生的概率为1/6,再加上1,得到1~6的随机数,每个数产生的几率仍为1/6.
D. 请问用java从1-33个整数中随机抽取6个数字 且不重复 该怎么写
public static void main(String[] args) {
int[] x = new int[33]; //创建值为1-33的整数表, 初始化
for (int i = 0; i < x.length; i++) {
x[i] = i+1;
}
// -------------------------------------------------
for (int i = 0; i < 6; i++) { // 随机取值6次 (你可以把6改成33. 试试看会不会出现重复值)
int j = (int) (Math.random()*(33-i)); // 随机值依次递减1, 以保证不可能重复随机到33这个值
System.out.println("第" + (i+1) + "个随机数为: "+ x[j]);// 输出随机值(真正的随机值为整数表x中的数)
x[j] = x[33-i-1]; // 整数表x中已被随机到的值替换为表中最后一个数, 避免以后可能随机到
}
// -------------------------------------------------
// 整个思路你可以想象成是栈堆的出栈, 随机到的值出栈, 就不会随机到重复值
}
有问题欢迎继续提问, 希望能帮你解决问题!
E. Java编程生成100个1~6之间的随机数,统计1~6每个数出现的概率;
首先:关于随机数的生成方法
java里生成随机数主要有2个方法比较常用.
1.Random类. 在java.util.包里, 有多种方法可以随机产生int, long, double,boolean等类型
2.Math 类,在java.lang.包里, 可以生成一个[0~1)之间的随机浮点数
*备注* :a. )使用Random需要导包,但是使用Math无需导包.
b. )Math底层还是调用了Random类的nextDouble()方法
其次:关于随机数的代码
例如生成[1,6]之间的随机数
1 .Random的方法,生成的随机数
Randomr=newRandom();
intnum1=r.nextInt(6)+1;//r.next(6)生成的是0~5之间的数字,需要+1,才是[1~6]之间的数字
2. Math的方法,进行随机数的生成
intnum=(int)(Math.random()*6)+1;
//(int)(Math.random()*6)生成的是0~5之间的整数
//需要+1才是[1~6]的数字
关于次数统计的方案
1, 可以使用HashMap<K,V>的方法进行存储统计. 因为key不重复,所以key可以来存数字1~6, 而对应的V就可以用来存储出现的次数
2. 可以使用数组的方法来存出现的次数. 数字1~6 是连续的, 数组下标也是连续的.我们可以用下标[0~5] 来代表数字[1~6], 数组的每个格子用来存数字数字出现的次数
完整的代码
//本题使用数组来写代码比较方便,简洁.
importjava.util.Random;
publicclassRandomDemo{
publicstaticvoidmain(String[]args){
int[]times=newint[6];//6个格子的数组,存储出现的次数
intn=100;//循环的次数
Randomr=newRandom();
for(inti=0;i<n;i++){
intnum=r.nextInt(6)+1;//方法1随机产生1~6的数字
//intnum=(int)(Math.random()*6)+1;//方法2随机产生1~6的数字
times[num-1]=times[num-1]+1;//次数增加1
}
for(inti=0;i<times.length;i++){
System.out.println((i+1)+"出现的次数"+times[i]);
}
}
}
输出: 当n=100时
1出现的次数13
2出现的次数16
3出现的次数17
4出现的次数23
5出现的次数21
6出现的次数10
输出: 当n=1000时
1出现的次数160
2出现的次数177
3出现的次数161
4出现的次数169
5出现的次数175
6出现的次数158
结论:
n=100时, 6是次数是10, 4次数是23, 两者的次数相差2倍多
n=1000时, 6次数是158, 2次数是177, 两者比较接近
说明: 当随机的次数越多. 那么随机数的概率也越来越接近~
F. 使用java语言输出1到100之间的6个随机不重复的整数之和
在Java中,我们可以通过编写特定的代码来生成1到100之间的6个随机且不重复的整数,并计算它们的总和。为了实现这一点,我们需要使用一些循环和条件语句来确保每次生成的随机数都是唯一的。下面是一个简单的Java程序实例:
首先,我们需要导入必要的包,并定义一个主类GG。在main方法中,我们将使用一个循环来生成6个不重复的随机数。为了实现这一点,我们设置了一个计数器变量count来跟踪已生成的随机数数量,以及一个临时变量tmp来存储当前生成的随机数。
在循环内部,我们使用Math.random()方法生成一个0到1之间的随机数,并将其转换为1到100之间的整数。如果生成的随机数已经存在于之前生成的随机数列表中,则我们需要重新生成一个新的随机数,直到找到一个独特的数。
一旦我们得到了一个独一无二的随机数,我们将其存储在变量n中,并将其输出到控制台。同时,我们将计数器count增加1。当计数器达到6时,表示我们已经生成了6个不重复的随机数,循环结束。
通过这种方式,我们可以确保每次生成的随机数都是独特的,并且它们的总和可以通过简单的数学运算轻松计算出来。例如,如果生成的随机数为33,45,22,88,99,15,那么它们的总和就是282。
需要注意的是,上述代码片段仅展示了如何生成不重复的随机数,而并未包括计算这些数总和的具体实现。在实际应用中,可以根据需要对生成的随机数进行进一步处理,例如计算它们的总和或者进行其他数学运算。
G. java 随机生成一个六位数
publicclassGuessNum{
publicstaticvoidmain(String[]args){
inti=getRandomNum();
System.out.println("已生成随机数!");
System.out.println(i);//方便测试打印出随机数~~可删除~~
while(true){
try{
System.out.print("请输入一个6位正"+"整数:");
Readerreader=newInputStreamReader(System.in);
char[]b=newchar[6];
reader.read(b);
StringguessStr=newString(b).trim();
intguessInt=Integer.parseInt(guessStr);
if(guessInt==i){
System.out.println("恭喜猜对!");
break;
}
System.out.println("不对重猜!");
}catch(Exceptione){
System.out.println("输入有误!");
}
}
}
privatestaticintgetRandomNum(){
Randomr=newRandom();
returnr.nextInt(900000)+100000;
}
}