题目如下:
有三张卡,其中两张银卡,一张黄金卡,放在三张门后提供给竞猜者来猜,在竞猜者三选一后,主持人在翻开剩下两张中没有被选中的一张银卡,问竞猜者是否重新选择猜卡。因此,该节目存在两种不同猜法,即保持原来选择不变,或者在主持人翻开一张银卡后,重新选择。请利用蒙特卡洛仿真方法验证湖南经视台猜 “黄金卡”节目两种不同方法的优劣。
有三张卡,其中两张银卡,一张黄金卡,放在三张门后提供给竞猜者来猜,在竞猜者三选一后,主持人在翻开剩下两张中没有被选中的一张银卡,问竞猜者是否重新选择猜卡。因此,该节目存在两种不同猜法,即保持原来选择不变,或者在主持人翻开一张银卡后,重新选择。请利用蒙特卡洛仿真方法验证湖南经视台猜 “黄金卡”节目两种不同方法的优劣。
解决方案 »
- 如何在jsp页面实现分页功能,而点击删除之后页码不会乱掉
- 急救!这个程序运行出错啦,唉………,各位帮看看吧
- 请问: public class JLabel extends JComponent implements SwingConstants,Accessible分别是什么意思呀
- 请教各位如何用jmagick实现裁减图片?
- java一个月,总结
- 什么方法实现像C++中的sizeof() 函数呢 在Java中?
- smartupload的中文问题----在线等-----
- HELP ME:怎么用Label实现Button的鼠标事件效果(见内容)?
- 为什么用jb编写的源程序用jdk编译却不行?
- IAS是什么东东?
- 代码优化,金碟面试题??
- IO问题
贴出代码,如果理解的错误请见谅
public static void main(String[] args) {
//定义原始card数组,0表示银卡,1表示金卡
int[] cards = {0,0,1};
//初始化概率
double chance1 =0;
double chance2 =0;
//统计100000次,计算换牌/不换牌可以胜利的概率
for(int i=0;i<100000;i++){
int random = (int) (Math.random()*3);
//表示第一次抽取的牌
int card1 = cards[random];
chance1+=card1;
//表示第二次如果换牌之后的牌
int card2 = Math.abs(card1-1);
chance2+=card2;
}
//输出概率
System.out.println("不换牌获胜的几率为:"+chance1/100000);
System.out.println("换牌获胜的几率为:"+chance2/100000);
}
计算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}