㈠ 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);
}
}
㈡ java中概率的問題
你的問題描述不清。
如果是別的數字是均等的,那把一個單獨處理,別的數字分享17/20的概率。實際上是一個映射的問題。具體實現就是拿20個數字做random,然後取整,比如1->1,2、3->2,若是其它,則重新獲取一個3的random,當然要把1和2給去掉
——————————————
那不就更容易了,剩下的不需要重新獲取random了,直接就是3
————————————————————————
public static void main(String arg[]) {
System.out.println(getInt());
}
private static long getInt() {
long a = Math.round(Math.random() * 20);
if (a == 0 || a == 1) {
return 1;
} else if (a == 2) {
return 2;
} else {
return 3;
}
}
㈢ 關於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.
㈣ java程序:編寫生成100個1-6之間的隨機數,統計1—6每個出現的概率,菜鳥看不懂程序
1.用內置方法Math.random()產生一個隨機數介於0~1。
2.強制轉化為int類型,根據int類型的特點,這個數是0~5之間的整數。
3.得到的數加1,這樣這個數就是介於1~6的整數,並且是隨機的。
4.將介於1~6之間的這個整數賦值給randomNum
5.(重點)probability是個數組,這個程序的演算法就是:利用probability這個數組記錄隨機數出現的次數,probability[0]記錄隨機數1出現的次數,就是當出現的隨機數為1時,數組的probability[randomNum-1]項加1(randomNum-1是為了表現演算法,實際的程序中是不需要先加1再減1的)。同理:其它的隨意數也做這樣的處理。這樣,probability這個數組中[0]項保存的是1的出現次數,[1]項保存的是2出現的次數…………
6.輸出隨機數的值(後面加個空格「\t」)
7.循環到步驟第1.個步驟.
㈤ Java設置1到100之內的隨機數 要求80出現的概率在80% 求解答
在100之內,隨便取2個數(如:20,1),然後組成一個數組如下[20,1,8,8,8,8,8,8,8,8],隨即就ok了,絕對80%。
不過這種題目太無恥了,典型的抽獎作弊。
㈥ 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, 兩者比較接近
說明: 當隨機的次數越多. 那麼隨機數的概率也越來越接近~
㈦ 編寫JAVA程序,生成100個1到6之間的隨機數,統計1到6每個數出現的概率
package 測試包;
public class 隨機數16 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int aa[]=new int[100];
int bb[]=new int[6];
for(int i=0;i<100;i++){
aa[i]=(int)(Math.random()*6+1);
if(i<6){
bb[i]=0;
}//if
}
for(int j=0;j<6;j++){
for(int k=0;k<100;k++){
if (j+1==aa[k]){bb[j]=bb[j]+1;}
}//for k
}//for j
for(int L=0;L<6;L++){
System.out.println((L+1)+"出現的幾率是:"+bb[L]+"%");
}
}
}
㈧ java隨機數概率問題
@Test
public void outChar(){
char[] charArr={'a','b','c','d','e','f','g','h','i','j'};
Random random=new Random();
int i;
for(int j=0;j<100;j++){
i= random.nextInt(9);
System.out.println(charArr[i]);
}
}
應該可以解決吧
㈨ java中如何以不同概率產生隨機數1-30
Random rm = new Random();
int i = rm.nextInt(18);
int n = 0;
if(i > 8){
n = rm.nextInt(10)+1;
}else if(i > 2&&i <= 8){
n = rm.nextInt(11) + 10;
}else if(i<=2){
n = rm.nextInt(11) + 20;
}
這樣生成的整數n是 3/6的概率在1-10之間,2/6的概率是在10-20之間,1/6的概率是在20-30之間(這種都是偽隨機,但盡量接近概率)
你看看這樣行不行
希望對你有幫助