求java算法:根据物品的数量来确定抽奖的概率(当物品数量为0时无论如何都不可能选到)

求java算法:根据物品的数量来确定抽奖的概率(当物品数量为0时无论如何都不可能选到),第1张

public class Lottery {

private int m = 1000//发放奖券的数量

private int n = 2//奖品的数量

public boolean getLottery(){

boolean isLottery = false

double d = (double)n/(double)m//中奖概率

double r = Math.random()//0~1之间的随漏斗做机数,包括0

if(r<d){//如果随机数小于概率 那么中奖

n--/销吵/奖品数量-1

isLottery = true

}

m--//奖券数返衡量-1

return isLottery

}

}

import java.awt.EventQueue

import java.awt.TextArea

import java.awt.TextField

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.Random

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

import javax.swing.JTextArea

import javax.swing.JTextField

import javax.swing.border.EmptyBorder

public class LuckySelect extends JFrame {

private JPanel contentPane

private JTextField textFieldA

private JTextField textFieldB

private JTextField textFieldC

private 闷橘TextField textField

private JTextField textFieldResult

private JTextArea textArea

/**

 * Launch the application.

 */

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

LuckySelect frame = new LuckySelect()

frame.setVisible(true)

} catch (Exception e) {

e.printStackTrace()

}

}

})

}

/**

 * Create the frame.

 */

public LuckySelect() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

setBounds(100, 100, 450, 251)

contentPane = new JPanel()

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5))

contentPane.setLayout(null)

setContentPane(contentPane)

JLabel lblA = new JLabel("A")

lblA.setBounds(10, 128, 54, 15)

contentPane.add(lblA)

JLabel lblB = new JLabel("B")

lblB.setBounds(124, 128, 缓纳54, 15)

contentPane.add(lblB)

JLabel lblC = new JLabel("C")

lblC.setBounds(254, 128, 54, 15)

contentPane.add(lblC)

textFieldA 蚂哪团= new JTextField()

textFieldA.setBounds(30, 125, 66, 21)

contentPane.add(textFieldA)

textFieldA.setColumns(10)

textFieldB = new JTextField()

textFieldB.setColumns(10)

textFieldB.setBounds(149, 125, 66, 21)

contentPane.add(textFieldB)

textFieldC = new JTextField()

textFieldC.setColumns(10)

textFieldC.setBounds(264, 125, 66, 21)

contentPane.add(textFieldC)

textField = new TextField()

textField.setBounds(98, 167, 157, 21)

contentPane.add(textField)

textField.setColumns(10)

textFieldResult = new JTextField()

textFieldResult.setBounds(280, 167, 66, 21)

contentPane.add(textFieldResult)

textFieldResult.setColumns(10)

textFieldA.setText("10")

textFieldB.setText("10")

textFieldC.setText("10")

JButton button = new JButton("\u62BD\u5956")

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

select()

}

})

button.setBounds(0, 166, 93, 23)

contentPane.add(button)

textArea = new JTextArea()

textArea.setBounds(30, 31, 306, 83)

contentPane.add(textArea)

}

protected void select() {

// TODO Auto-generated method stub

int aNum = Integer.decode(textFieldA.getText())

int bNum = Integer.decode(textFieldB.getText())

int cNum = Integer.decode(textFieldB.getText())

Random r = new Random()

int random = r.nextInt(aNum + bNum + cNum)

if(random <= aNum){

textFieldA.setText(Integer.toString(Integer.decode(textFieldA.getText()) - 1))

textArea.append(Integer.toString(random) + "抽中了A\n")

}else if(random <= aNum + bNum){

textFieldB.setText(Integer.toString(Integer.decode(textFieldB.getText()) - 1))

textArea.append(Integer.toString(random) + "抽中了B\n")

}else if(random <= aNum + bNum + cNum){

textFieldC.setText(Integer.toString(Integer.decode(textFieldC.getText()) - 1))

textArea.append(Integer.toString(random) + "抽中了C\n")

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12305393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存