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;
}
}