抽獎的編程題
『壹』 如何設計一個可以電腦隨機抽獎程序
為了幫助網友解決「如何設計一個可以電腦隨機抽獎程序?」相關的問題,中國學網通過互聯網對「如何設計一個可以電腦隨機抽獎程序?」相關的解決方案進行了整理,用戶詳細問題包括:RT,我想知道:如何設計一個可以電腦隨機抽獎程序?,具體解決方案如下:
解決方案1:
如果你是對編程一竅不通,又想快速學會做小程序的話,建議學flash+as3。因為flash本來就是動畫軟體,有簡單易懂的界面繪制系統,不像java之類的語言需要用代碼來解決界面問題。相對來說,初學者要做小程序,學這個會比較速成。
以下我列舉一些你製作這個程序應該要用到的一些基本知識,你搞懂這些大概就可以做出這個程序了。不過,這樣速成的學習方法,也會有弊端,我會在下面補充說明。
首先你可以熟悉一下flash的界面。為編程做准備,至少要了解庫和屬性面板,要了解影片剪輯或按鈕。
然後應該學習一下編程的基本知識,比如變數(Variable)、數據類型(Datatype)、方法(Method)的概念,還有if、for等常見語句的用法。你可以把這些當關鍵詞在網路搜索一下(如果直接搜搜不到相關內容,可以多加一個關鍵詞,比如編程或as3之類的,如果中文搜不到就搜英文關鍵詞)。
要了解一下as3的常用語法。比如聲明變數、方法的語句。關於這個可以搜一下as3的var和function關鍵詞。
最後,當你對編程有了一個大致的概念之後,你就可以著手准備你的這個小程序。
你可能需要用到的關鍵方法:
addEventListener() //你最可能用到的事件是MouseEvent.CLICK
Math.random()
Math.round()或Math.floor()或Math.ceil() //這三個都是可以用來數字取整的方法,有細微的不同
addChild()
因為你是初學者,即使是做這么簡單的小程序,也有可能會遇到各種各樣的情況。建議你一開始不要想得太復雜,把基本的效果做出來再說,否則很有可能在一些非關鍵的問題上屢屢碰壁,最後半途而廢。而且有時因為自己想得太復雜,遇到問題連想問人都沒法問,因為表達不清楚。
如果只是抽獎的程序,學會了以上這些之後,要做出來應該沒有什麼大問題。如果你要搞什麼附加的模塊,那就另當別論了——比如用戶帳號、聯網、界面特效等等,我列舉的知識點不足以支持實現這些功能,那需要更多的學習。
那麼,最後說一下這種速成學習法的弊端。
很明顯的,速成=基礎不扎實,這簡直就是自然而然的邏輯關系。
有可能出現的結果是:學習花的時間少,但寫代碼的效率低,花的時間多;一旦出現錯誤,不知道該如何排錯;跟別人交流的時候,聽不懂各種術語;代碼不規范,別人不好幫你修改……等等。
要解決這些問題,只有一個途徑,就是系統、正規地學習編程。但是這樣一來,跟你這個問題的出發點就相差十萬八千里了。這就好比,本來你只是想自己做一艘船。但想做一艘正兒八經的船,而不是玩具船,不是破破爛爛的船,那就要費不少功夫。從它的材料開始,精心培育樹木、採集礦物、打制零件……如此涉及到整個制船業的知識。看起來,你並沒有打算走那麼深。
如果我僅僅告訴你速成的學習方法,感覺上有點兒像害人。因為對於學習編程來說,這不是一個好的開始。但如果我告訴你「乖乖從基礎開始學起吧」,似乎又有點兒強行替你做決定的感覺。
總而言之,現在我把兩個選項都告訴你了。
從基礎開始系統地學習,這樣比較正規,但也比較枯燥,可能你自學了半天也做不出什麼像樣的東西,然後最初的那股興趣就漸漸消失了。不過,如果是這樣,flash+as3的建議就不一定合適了,或許你要仔細考慮一下職業規劃什麼的,再決定發展的方向——這樣的話,就是比較嚴肅的話題了。
速成的學習法,如果你悟性好的話,能比較快地掌握一些重點的知識,對編程有一個大概的了解(但是悟性不好的話,說不定反而會搞得更煩躁),很快地做出一些小成果出來。不感興趣的話,那就這樣了。感興趣的話,再往後發展。基礎的缺乏、不良的書寫代碼習慣,這些也是可以後來再補充、糾正的。如果你不確定要往編程這條路上深入發展(比如打算以碼農為職業),倒也可以用這種方法玩票,能走多遠算多遠。
解決方案2:
網賽有很多模版。沒必要自己做
解決方案3:
不知道你會那些語言啊 做桌面的一般用C# Web的用J2EE 至於什麼編程軟體 ,,,,,建議還是自己補一補知識把,這個我不知道怎麼回答你 貌似你好象什麼都不知道
『貳』 用java編寫一個彩票抽獎程序
我寫給你,如果是本專業,以後要多多學習。JDK 1.6
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class LuckyDrawn {
private JFrame f = new JFrame("Lucky Drawn");
private JButton btn = new JButton("Drawn");
private JTextField result = new JTextField("Result");
private static final int MIN = 1;
private static final int MAX = 30;
private static final int RESULT_COUNT = 7;
public LuckyDrawn(){
f.add(btn);
f.add(result);
result.setEditable(false);
btn.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
Random rand = new Random();
Set<Integer> set = new TreeSet<Integer>();
while(set.size() < RESULT_COUNT){
set.add(new Integer(rand.nextInt(MAX)+ 1));
}
StringBuffer sb = new StringBuffer("Lucky numbers are: ");
for (Iterator iter = set.iterator(); iter.hasNext();) {
sb.append(((Integer) iter.next()).intValue()).append(", ");
}
result.setText(sb.substring(0, sb.length() - 2).toString());
f.pack();
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
f.setLayout(new GridLayout(2, 1));
f.setVisible(true);
f.setLocation(500, 200);
f.pack();
f.validate();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new LuckyDrawn();
}
}
『叄』 EXCEL抽獎問題的演算法
可以實現前幾條,但是,「中獎次數的概率分布」是什麼意思?
如圖所示:
A2輸入=B1
B2輸入=IF((A2<>"")*(A2>2),IF(INT(RAND()*4+1)=1,"獎品",1),"")
A3輸入=IF(AND(A2>2,A2<>""),A2-3+ISNUMBER(B2),"")
C3輸入=SUM((B1:B1000<>"")*1)shift+enter+ctrl三鍵結束
D3輸入=COUNTIF(B1:B1000,"獎品")
將B2,A3分別下拉填充。
這樣,在B1中輸入原有的券數就可以了。