“黄金卡”节目简介如下:
     有三张卡,其中两张银卡,一张黄金卡,放在三张门后提供给竞猜者来猜,在竞猜者三选一后,主持人在翻开剩下两张中没有被选中的一张银卡,问竞猜者是否重新选择猜卡。因此,该节目存在两种不同猜法,即保持原来选择不变,或者在主持人翻开一张银卡后,重新选择。请利用蒙特卡洛仿真方法验证湖南经视台猜“黄金卡”节目两种不同方法的优劣。
知识点:
掌握事件处理机制;
掌握随机采样的方法;
掌握图形用户界面设计;
(注:最好采用图形用户方式设计)
希望大家最好给我代码说明,实在不行说说算法也行!

解决方案 »

  1.   

    http://topic.csdn.net/u/20100606/22/a7b0e64f-a7a4-4592-ab2c-20603128cbc3.html
    跟这个帖子不是一样的么....
      

  2.   

    汗,我把内容发到那边的帖子上了 
    因为直接用界面拉的,图形很丑哈哈见谅
    计算10000000次大概需要1秒,虽然支持long类型,但是如果你写太大的数字会等累死哦。import javax.swing.JOptionPane;/**
     * 
     * @author __USER__
     */
    public class test extends javax.swing.JFrame { /** Creates new form test */
    public test() {
    initComponents();
    } //GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() { jButton1 = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();
    jTextField1 = new javax.swing.JTextField();
    jTextField2 = new javax.swing.JTextField();
    jLabel2 = new javax.swing.JLabel();
    jTextField3 = new javax.swing.JTextField();
    jLabel3 = new javax.swing.JLabel();
    jLabel4 = new javax.swing.JLabel();
    jTextField4 = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("\u5f00\u59cb\u6d4b\u8bd5");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    jButton1ActionPerformed(evt);
    }
    }); jLabel1.setText("\u8bf7\u8f93\u5165\u6d4b\u8bd5\u6b21\u6570\uff1a"); jTextField2.setEditable(false); jLabel2.setText("\u6362\u5361\u80dc\u5229\u6b21\u6570\uff1a"); jTextField3.setEditable(false); jLabel3.setText("\u4e0d\u6362\u80dc\u5229\u6b21\u6570\uff1a"); jLabel4.setText("\u603b\u8017\u65f6\uff08\u79d2\uff09\uff1a"); jTextField4.setEditable(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
    getContentPane());
    getContentPane().setLayout(layout);
    layout
    .setHorizontalGroup(layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(
    layout
    .createSequentialGroup()
    .addGap(84, 84, 84)
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(
    layout
    .createSequentialGroup()
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(
    layout
    .createSequentialGroup()
    .addComponent(
    jLabel3)
    .addGap(
    26,
    26,
    26)
    .addComponent(
    jTextField3,
    javax.swing.GroupLayout.DEFAULT_SIZE,
    153,
    Short.MAX_VALUE))
    .addGroup(
    layout
    .createSequentialGroup()
    .addComponent(
    jLabel2)
    .addGap(
    26,
    26,
    26)
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING)
    .addComponent(
    jTextField4,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    97,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(
    jTextField2,
    javax.swing.GroupLayout.DEFAULT_SIZE,
    153,
    Short.MAX_VALUE))))
    .addGap(
    119,
    119,
    119))
    .addGroup(
    layout
    .createSequentialGroup()
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.TRAILING)
    .addComponent(
    jLabel4)
    .addComponent(
    jLabel1))
    .addPreferredGap(
    javax.swing.LayoutStyle.ComponentPlacement.RELATED)
    .addComponent(
    jTextField1,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    117,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addGap(
    18,
    18,
    18)
    .addComponent(
    jButton1)
    .addContainerGap()))));
    layout
    .setVerticalGroup(layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.LEADING)
    .addGroup(
    javax.swing.GroupLayout.Alignment.TRAILING,
    layout
    .createSequentialGroup()
    .addGap(52, 52, 52)
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(jLabel4)
    .addComponent(
    jTextField4,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    javax.swing.GroupLayout.DEFAULT_SIZE,
    javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGap(28, 28, 28)
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(
    jLabel2,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    20,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(
    jTextField2,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    javax.swing.GroupLayout.DEFAULT_SIZE,
    javax.swing.GroupLayout.PREFERRED_SIZE))
    .addGap(32, 32, 32)
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(
    jLabel3,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    20,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(
    jTextField3,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    javax.swing.GroupLayout.DEFAULT_SIZE,
    javax.swing.GroupLayout.PREFERRED_SIZE))
    .addPreferredGap(
    javax.swing.LayoutStyle.ComponentPlacement.RELATED,
    67, Short.MAX_VALUE)
    .addGroup(
    layout
    .createParallelGroup(
    javax.swing.GroupLayout.Alignment.BASELINE)
    .addComponent(
    jLabel1,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    20,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(
    jTextField1,
    javax.swing.GroupLayout.PREFERRED_SIZE,
    javax.swing.GroupLayout.DEFAULT_SIZE,
    javax.swing.GroupLayout.PREFERRED_SIZE)
    .addComponent(jButton1))
    .addGap(76, 76, 76))); pack();
    }// </editor-fold>
    //GEN-END:initComponents private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    long time = System.currentTimeMillis();
    String number = jTextField1.getText();
    if (number.matches("^[1-9]{1}\\d*$")) {
    long count1 = 0;
    long count2 = 0;
    int[] cards = { 0, 0, 1 };
    long times = Long.parseLong(number);
    for (long i = 0L; i < times; i++) {
    int random = (int) (Math.random() * 3);
    //表示第一次抽取的牌
    int card1 = cards[random];
    count1 += card1;
    //表示第二次如果换牌之后的牌
    int card2 = Math.abs(card1 - 1);
    count2 += card2;
    }
    time = System.currentTimeMillis() - time;
    jTextField2.setText("" + count2);
    jTextField3.setText("" + count1);
    jTextField4.setText("" + time/1000.0);
    } else {
    JOptionPane.showMessageDialog(null, "输入有误!");
    }
    } /**
     * @param args
     *            the command line arguments
     */
    public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
    new test().setVisible(true);
    }
    });
    } //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration//GEN-END:variables}