[問題 ]JAVA 亂數 不重複

看板java作者 (xdxd454561)時間10年前 (2014/12/15 00:27), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
目前是只有將2個數隨機顯示在JLable上。 求解如何讓這兩個值不重複且num1亂數不能出現10,26這兩個值ꔿ ------------------------------------------------------------- package cc; import java.awt.*; import java.awt.event.*; import java.util.Random; import javax.swing.*; public class cc implements ActionListener { JFrame jf; JLabel jlnum; JLabel jlgift; JLabel jlsign; public static void main(String args[]){ new cc(); } public cc(){ //Frame Setting jf=new JFrame("Random"); jf.setSize(960, 480); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); //Button Setting JButton jb= new JButton("JButton"); jb.addActionListener(this); jb.setSize(60,20); jb.setVisible(true); jb.setText("Click to Generate a number"); //Label Setting //Number1 Label Setting jlnum=new JLabel("Result#"); jlnum.setSize(350, 350); jlnum.setFont(new Font("Consolas", Font.BOLD, 98)); jlnum.setHorizontalAlignment(JLabel.CENTER); jlnum.setVisible(true); //Number2 Label Setting jlgift=new JLabel("Result#"); jlgift.setSize(350, 350); jlgift.setFont(new Font("Consolas", Font.BOLD, 98)); jlgift.setHorizontalAlignment(JLabel.CENTER); jlgift.setVisible(true); //Layout jf.getContentPane().add(BorderLayout.NORTH, jb); jf.getContentPane().add(BorderLayout.WEST, jlnum); jf.getContentPane().add(BorderLayout.EAST, jlgift); } @Override public void actionPerformed(ActionEvent e) { Random num1=new Random(); //A Random Value(No.1) Random num2=new Random(); //A Random Value(NNo.2) int intnum1=num1.nextInt(30)+1; //Convert to Integer< No.1) int intnum2=num2.nextInt(28)+1; //Convert to Integer(No.2) String stringnum1=Integer.toString(intnum1); //Integer Covert to String(No.1) String stringnum2=Integer.toString(intnum2); //Integer Covert to String(No.2) jlnum.setFont(new Font("Consolas", Font.BOLD, 325)); //Set Font Size(No.1) jlnum.setText(stringnum1); //Show the Random Number in the Lable(No.2) jlgift.setFont(new Font("Consolas", Font.BOLD, 325)); //Set Font Size(No.1) jlgift.setText(stringnum2); //Show the Random Number in the Lable(No.2) } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.247.10 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1418574464.A.1BE.html

12/16 22:38, , 1F
如果數值不大 我倒是有個笨方法 先把所有的數字放到list
12/16 22:38, 1F

12/16 22:39, , 2F
再int num = list.remove(random.nextInt(list.size()))
12/16 22:39, 2F

12/17 18:19, , 3F
Fisher–Yates shuffle ?
12/17 18:19, 3F
文章代碼(AID): #1KZRg06- (java)
文章代碼(AID): #1KZRg06- (java)