⑴ 在java中產生隨機數
一、利用random方法來生成隨機數。
在Java語言中生成隨機數相對來說比較簡單,因為有一個現成的方法可以使用。在Math類中,Java語言提供了一個叫做random的方法。通過這個方法可以讓系統產生隨機數。不過默認情況下,其產生的隨機數范圍比較小,為大於等於0到小於1的double型隨機數。雖然其隨機數產生的范圍比較小,不能夠滿足日常的需求。如日常工作中可能需要產生整數的隨機數。其實,只要對這個方法進行一些靈活的處理,就可以獲取任意范圍的隨機數。
如我們可以先通過random方法生成一個隨機數,然後將結果乘以10。此時產生的隨機數字即為大於等於0小於10的數字。然後再利用Int方法進行轉換(它會去掉小數掉後面的數字,即只獲取整數部分,不是四捨五入)。最後即可獲取一個0到9的整數型隨機數字。其實現方法很簡單,就是對原有的random方法按照如下的格式進行變型:(int)(Math.Random()*10)即可。其實我們還可以對這個方法進行擴展,讓其產生任意范圍內的隨機數。至需要將這個10換成n即可,如改為(int)(Math.Random()*n)。此時應用程序就會產生一個大於等於0小與n之間的隨機數。如將n設置為5,那麼其就會產生一個0到5之間的整數型的隨機數。如果將這個寫成一個帶參數的方法,那麼只要用戶輸入需要生成隨機數的最大值,就可以讓這個方法來生成制定范圍的隨機數。在Java中定義自己的工具庫
有時候程序員可能需要生成一個指定范圍內的隨機偶數或者奇數。此時是否可以通過這個方法來實現呢?答案是肯定的。如現在程序要需要生成一個1-100范圍內的偶數。此時該如何實現?首先,需要生成一個0到99之內的隨機數(至於這里為什麼是99,大家耐心看下去就知道原因了)。要實現這個需求,很簡單吧,只要通過如下語句就可以實現: i=1+(int)(Math.Random()*100)。其中(int)(Math.Random()*99)產生0到99的整數型隨機數。然後再加上1就是產生1到100之間的隨機整數。然後將產生的隨機數賦值給變數i。但是此時其產生的隨機數即有偶數,又有奇數。而現在程序員需要的是一個隨機的偶數。那麼我們可以在後面加上一個if判斷語句。將這個隨機數除以2,如果沒有餘數的話(或者余數為0)則表明這個隨機數是偶數,直接返回即可。如果其返回的余數不為零,那麼就表明其是奇數,我們只要加上1就變為了偶數,返回即可。注意,在上面的隨機數生成中,筆者採用的范圍是0到99,然後再加上1讓其變為1到100的隨機數。最後的結果就是生成1到100之間的隨機偶數。其實,如果要范圍隨機奇數的話,至需要對上面的語句進行稍微的修改即可。Java:改變你我的世界
⑵ java隨機數分配問題!
暫時這么說:將n個數隨即分配到m個位置
1. 循環待分配的數:n
2. 產生一個隨即數,idx: 范圍 1~m
3. 根據隨即數idx,將n放入(追加)對應的位置
⑶ java隨機分組 隨機組數 隨機分配
關鍵就是產生隨機數了舉兆。Math.random()函數可以用來產螞答餘生0-1之悶滾間的隨機數。後續的自己處理下就行了。
⑷ java如何產生1-8的整數隨機數
在java中,生成隨機數使用的是Random類。要生成在[min,max]之間的隨機整數,則可以如下:
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
int max = 8;
int min = 1;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
System.out.println(s);
}
}
其中,random.nextInt(max)表示生成[0,max]之間的隨機數,然後對(max-min+1)取模。
⑸ 求助:java中怎麼實現按比例隨機分配
比如有十個糖果,按照2:3:5的比例分配給三個小孩
publicclassluck{
publicstaticList<String>candy=newArrayList<String>();
publicstaticList<String>child1=newArrayList<String>();
publicstaticList<String>child2=newArrayList<String>();
publicstaticList<String>child3=newArrayList<String>();
//2:3:5
publicstaticvoidmain(String[]args){
candy.add("糖果1");
candy.add("糖果2");
candy.add("糖果3");
candy.add("糖果4");
candy.add("糖果5");
candy.add("糖果6");
candy.add("糖果7");
candy.add("糖果8");
candy.add("糖果9");
candy.add("糖果10");
intcount=10;
for(inti=0;i<2;i++){
intmath=(int)(Math.random()*count);
child1.add(candy.get(math));
candy.remove(math);
count--;
}
for(inti=0;i<3;i++){
intmath=(int)(Math.random()*count);
child2.add(candy.get(math));
candy.remove(math);
count--;
}
for(inti=0;i<5;i++){
intmath=(int)(Math.random()*count);
child3.add(candy.get(math));
candy.remove(math);
count--;
}
System.out.println("child1的糖:");
for(inti=0;i<child1.size();i++){
System.out.println(child1.get(i));
}
System.out.println("child2的糖:");
for(inti=0;i<child2.size();i++){
System.out.println(child2.get(i));
}
System.out.println("child3的糖:");
for(inti=0;i<child3.size();i++){
System.out.println(child3.get(i));
}
}
}
輸出結果:
child1的糖:
糖果6
糖果1
child2的糖:
糖果7
糖果2
糖果8
child3的糖:
糖果4
糖果3
糖果10
糖果5
糖果9
⑹ 用JAVA產生[0,1]均勻分布的隨機數 要演算法
double rand(double []r)
{
double base,u,p,v,temp1,temp2,temp3;
base=256.0;
u=17.0;
v=139.0;
temp1=u*(r[0])+v; //就算總數
temp2=(int)(temp1/base);//計算商
temp3=temp1-temp2*base;//余數
r[0]=temp3;//更新隨版機種子,為下權一次使用
p=r[0]/base;//產生隨機數
return p;
}
其中base為基數,一般去2的整數倍,常數,u、v可以隨意取。數組r[]為只能去一個值的數組。如:double[]r={5.0}.
⑺ Java產生隨機數的幾種方式
方法1
(數據類型)(最小值+Math.random()*(最大值-最小值+1))
例:
(int)(1+Math.random()*(10-1+1))
從1到10的型隨數
方法2
獲得隨機數
for (int i=0;i<30;i++)
{System.out.println((int)(1+Math.random()*10));}
(int)(1+Math.random()*10)
通過java.Math包的random方法得到1-10的int隨機數
公式是:最小值---最大值(整數)的隨機數
(類型)最小值+Math.random()*最大值
方法3
Random ra =new Random();
for (int i=0;i<30;i++)
{System.out.println(ra.nextInt(10)+1);}
通過java.util包中的Random類的nextInt方法來得到1-10的int隨機數
生成0到1之間的任意隨機小數:
生成[0,d)區間的隨機小數,d為任意正的小數,則只需要將nextDouble方法的返回值乘以d即可。
[n1,n2]
也就是 ra.nextDouble() * (n2-n1)+n1
⑻ 編寫一個Java應用程序,實現如下功能: 隨機分配給客戶一個1~100之間的整數; 用戶從鍵盤輸入自己的猜測。
//終於寫好了,試試吧……有問題再問
import java.awt.*;
import java.awt.event.*;
public class CaiShuZi
{ public static void main(String args[])
{ new Gui("猜數字游戲"); }
}
class Gui extends Frame implements ActionListener
{
static int number;
static int guessnumber;
static TextField tx;
static Label lb3,lb1,lb2;
static Button bt3,bt1,bt2;
Gui(String s)
{ super(s);
lb1=new Label("單擊嫌盯御該按鈕可以產生一個0-100之間的隨機數:");
bt1=new Button("產生隨機數");
lb2=new Label("輸入一個數後單擊判斷即顯示判斷結果:"芹岩);
tx=new TextField(10);
bt2=new Button("判斷");
bt2.setEnabled(false);
bt3=new Button("答案");
lb3=new Label(" ");
setLayout(new FlowLayout());
add(lb1);
add(bt1);
add(lb2);
add(tx);
add(bt2);
add(lb3);
add(bt3);
bt1.addActionListener(this) ;
bt2.addActionListener(this) ;
bt3.addActionListener(this) ;
addWindowListener(new Winad()) ;
setSize(300,200);
setVisible(true);
}
//重寫ActionListener介面中的方法
public void actionPerformed(ActionEvent e)
{ if(e.getActionCommand()=="產生隨機數")
{
for(int i=0;i<10;i++)
number=number+(int)(Math.random()*10)+1;
bt2.setEnabled(true);
}
if(e.getActionCommand()=="判斷")
{
try{
guessnumber=Integer.parseInt(tx.getText());
if(number==guessnumber)
lb3.setText("猜對了則運");
else if(number<guessnumber)
lb3.setText("猜大了");
else
lb3.setText("猜小了");
}catch(Exception e1){lb3.setText("輸入錯誤或為空!");}
}
if(e.getActionCommand()=="答案")
lb3.setText(String.valueOf(number));
}
}
class Winad extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{ System.exit(0);}
}
⑼ java隨機分配!比如有五個座位a, b, c ,d ,e,有五個學生1,2,3,4,5 把學生分配到座位上不能有重復!求代碼
import java.util.*;
public class a {
public static void main(String[] args) {
int i;
char c;
String[] a = {"座位1","座位2","座位3","座位4","座位5"};
/*生成座位list*/
List<String> seat = new ArrayList<String>();
/*向其中添加座位*/
for(i = 0;i < 5;i++){
seat.add(a[i]);
}
/*調用函數,將順序打亂*/
Collections.shuffle(seat);
/*顯示回結果*/
for(i = 0,c = 'a'; c <= 'e';c++,i++){
System.out.println("學生"+c+"坐在答"+seat.get(i));
}
}
}
有問題追問我